AMIGA-RESISTANCE

Die Projektseite für alles rund um den Amiga
Aktuelle Zeit: 28 Mär 2024, 16:28

Alle Zeiten sind UTC


 

 

 



Ein neues Thema erstellen  Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Start- und Zugriffsverzeichnis
BeitragVerfasst: 01 Nov 2008, 11:56 
Offline
Schreiberling
Benutzeravatar

Registriert: 17 Okt 2007, 21:48
Beiträge: 1392
Postleitzahl: 4132
Land: Schweiz
Wohnort: Muttenz
In Hollywood ist es ja möglich, über
Requester den User Verzeichnisse und
Dateien auszuwählen.

Ich möchte aber diese Auswahl durch
das Programm tätigen, so dass der
User nichts damit zu tun hat.

Aber Franz wird das Programm "Guguck"
in "dh2:programme" ablegen, Gerda
in "dh0:test/Hollywood/Guguck"
und ich brenne es auf CD im Verzeichnis
"cd0:Vögel/Wald/Guguck".

Darum meine Fragen:

Wie kann ich herausfinden, von welchem
Verzeichnis aus das Programm gestartet
wurde? (so etwas wie TheOriginDirectory)

Welcher Befehl sagt dem Programm,
auf welches Verzeichnis gerade
alle Zugriffe getätigt werden?
(in dem Fall TheCurrentDirectory)

Griessli
Tipsi


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 01 Nov 2008, 21:58 
Offline
Holly-Wooder
Benutzeravatar

Registriert: 01 Feb 2008, 10:47
Beiträge: 355
Postleitzahl: 1109
Land: Deutschland
Wohnort: Dresden
Hi Tipsi,

das ist relative einfach möglich:
t$ = GetFileAttributes("fileattr") ; hole die Dateiattribute der Datei
Print(t$.path) ; Pfad inklusive Dateinamen
Print("\n")
p$ = PathPart(t$.path)
Print(p$) ; Pfad ohne Dateinamen
"fileattr" ist der Name meiner compilierten Datei, Du musst das halt anpassen. D.h. Du musst bereits im Quelltext wissen, wie Dein ausführbares Programm mal heißen wird (sollte machbar sein :-D) und das trägst Du dann halt als Parameter von GetFileAttributes() ein.
t$.path holt Dir dann das Verzeichnis zu der Datei.

Ich hoffe, ich konnte Dir helfen.

Gruß!

_________________
[ img ]
CD32 + SX1; AmiKit (WinUAE) + OS3.9


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 01 Nov 2008, 23:11 
Offline
Schreiberling
Benutzeravatar

Registriert: 17 Okt 2007, 21:48
Beiträge: 1392
Postleitzahl: 4132
Land: Schweiz
Wohnort: Muttenz
Salli Clyde

Was soll ich machen ohne Dich?

Es beruhigt mich, dass diese Funktion
erst seit Version 3 integriert ist.
Denn ich habe das Handbuch der V2.5
in der Nähe und blättere mich immer
wieder hindurch.

Aber ich wäre ehrlicherweise nicht
auf die Idee gekommen, mit GetFileAttributes
nach dem Startverzeichnis oder so zu
suchen. Denn Attribute sind für mich
bis jetzt immer die "Protections Flags"
gewesen.

Recht herzlichen Dank für Dein Beispiel,
denn jetzt geht's wieder weiter.

Griessli
Tipsi


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 01 Nov 2008, 23:15 
Offline
Holly-Wooder
Benutzeravatar

Registriert: 01 Feb 2008, 10:47
Beiträge: 355
Postleitzahl: 1109
Land: Deutschland
Wohnort: Dresden
:-) Gern geschehen!

Oh, hast Du Dir das Handbuch ausgedruckt?

GetFileAttributes() wäre auch nicht mein erster Gedanke gewesen, aber bei meiner Suche war klar, dass ich nach Funktionen in der DOS library suchen muss. Und dort kam dann mehr oder weniger nur noch GetFileAttributes() in Frage. Aber es war interessant zu testen, ob es wirklich so funktioniert, wie ich es mir überlegt hatte, von daher, danke für die schöne Aufgabe. :-)

Gute Nacht!

_________________
[ img ]
CD32 + SX1; AmiKit (WinUAE) + OS3.9


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 16 Nov 2008, 22:06 
Offline
Schreiberling
Benutzeravatar

Registriert: 17 Okt 2007, 21:48
Beiträge: 1392
Postleitzahl: 4132
Land: Schweiz
Wohnort: Muttenz
Salli Clyde

Als ich Andreas meinen Wunsch mitteilte,
diese zwei Funktionen in Hollywood
einzubauen, bekam ich zur Antwort,
dass beides schon interpretiert ist:

TheOriginDirectory$ = GetFileAttributes("").Path

Nach einem Verzeichniswechsel kann man
mit dem selben Befehl herausfinden,
auf welches Verzeichnis das Programm
zugreift:

TheCurrentDirectory$ = GetFileAttributes("").Path

Und das Witzige (oder Schlimme) ist:
Es steht mehr oder weniger auch in
der Dokumentation zu diesem Befehl.


> Oh, hast Du Dir das Handbuch ausgedruckt?

Ja, aber eben nur zur Version 2.5. Da
mein Englisch alles andere als brauchbar
ist, muss ich den Text in den Händen
halten können.

Griessli
Tipsi


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 16 Nov 2008, 22:10 
Offline
Holly-Wooder
Benutzeravatar

Registriert: 01 Feb 2008, 10:47
Beiträge: 355
Postleitzahl: 1109
Land: Deutschland
Wohnort: Dresden
Ah ja, prima Abkürzung! Danke für den Hinweis!

Wie kommst Du denn mit Deinem Projekt voran?

Gruß,
Clyde

_________________
[ img ]
CD32 + SX1; AmiKit (WinUAE) + OS3.9


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 17 Nov 2008, 08:13 
Offline
vielschreiber

Registriert: 30 Okt 2005, 10:29
Beiträge: 118
Postleitzahl: 0
Land: Deutschland
Zitat:
TheOriginDirectory$ = GetFileAttributes("").Path
Das sollte wohl eher GetFileAttributes("PROGDIR:").Path heißen. Es kann nämlich durchaus sein, daß beim Start das aktuelle Verzeihnis nicht das Programmverzeichnis ist.

Gruß Thomas


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 17 Nov 2008, 18:01 
Offline
Schreiberling
Benutzeravatar

Registriert: 17 Okt 2007, 21:48
Beiträge: 1392
Postleitzahl: 4132
Land: Schweiz
Wohnort: Muttenz
Salli Thomas und Clyde

@Tomas

Soviel ich mitbekommen habe, funktioniert
diese Methode bis zu dem Punkt, wo der
erste Verzeichniswechsel stattfindet.

Für diesen Zweck ist mir bis jetzt nur
ChangeDirectory als Möglichkeit bekannt.

Darum muss der GetFileAttributes Befehl
vorher aufgerufen werden, damit das
Startverzeichnis noch ausgelesen werden
kann.



@Clyde

Naja, mit dem Programm geht es langsam
vorwärts. Die normalen 25'000 Karten kann
es schon ausspucken. Ich hoffe, dass am
Dienstag mein normaler Internetzugang
wieder läuft, dann kann ich mehr Infos
liefern.

Griessli
Tipsi


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 18 Nov 2008, 12:48 
Offline
vielschreiber

Registriert: 30 Okt 2005, 10:29
Beiträge: 118
Postleitzahl: 0
Land: Deutschland
Zitat:
Soviel ich mitbekommen habe, funktioniert
diese Methode bis zu dem Punkt, wo der
erste Verzeichniswechsel stattfindet.
Das meine ich ja. Das Verzeichnis kann sozusagen schon gewechselt sein, wenn das Programm gestartet wird. Dann funktioniert die Methode von Anfang an nicht.

Wenn du z.B. das Programm aus der Shell aufrufst:

cd sys:tools
run work:hollywood/meinprogramm

Dann zeigt "" auf sys:tools, das Programm ist aber in Work:hollywood.

Das gleiche erreichst du in der Workbench, wenn du zuerst ein Projekt-Icon anklickst, die Shift-Taste festhältst und dann das Programm doppelklickst. Oder wenn du ein Projekt öffnest, das das Programm als Default-Tool hat. Dann ist das aktuelle Verzeichnis das des Projekts, nicht das des Programms.

PROGDIR: zeigt dagegen immer auf das Programmverzeichnis.

Gruß Thomas


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 18 Nov 2008, 13:57 
Offline
Holly-Wooder
Benutzeravatar

Registriert: 01 Feb 2008, 10:47
Beiträge: 355
Postleitzahl: 1109
Land: Deutschland
Wohnort: Dresden
Hi Thomas,

ich habe das gerade mal hier nachvollzogen, und ihr habt beide Recht.

Nutze ich aber Tipsis Variante mit leerem String, so wird mir immer das richtige, von Tipsi gewünschte Startverzeichnis angezeigt, auch wenn ich vorher in der Shell nach Sys:tools oder sonstwohin gewechselt habe.

Anders sieht es natürlich aus, wenn ich innerhalb des Hollywood-Skripts das Verzeichnis wechsle, bevor ich GetFileAttributes("").Path aufrufe, aber darauf ist Tipsi ja auch schon eingegangen.

Die sichere Variante ist aber Deine, klar. Aber eigentlich auch nur, wenn man die compilierte exe startet! Man kann seine HW-Skripte ja auch über den Hollywood-Interpreter starten - da würde dann Deine Variante wieder fehlschlagen, da so der Pfad zum Hollywood-Interpreter angezeigt werden würde; Tipsis Variante hingegen zeigt weiterhin zum richtigen (Skript)-Verzeichnis.

Kommt halt bissl auf den Anwendungszweck an, aber es ist gut zu wissen, welche Möglichkeiten es gibt. Dieser Assign (?) "Progdir:" war mir gänzlich neu. Danke dafür!

_________________
[ img ]
CD32 + SX1; AmiKit (WinUAE) + OS3.9


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 27 Nov 2008, 10:08 
Offline
Alter Hase

Registriert: 05 Feb 2008, 07:19
Beiträge: 51
Postleitzahl: 0
Land: Deutschland
Der spezielle Assign PROGDIR: wurde mit AmigaOS 2.0 eingeführt. eine echte Erleichterung. Offensichtlich aber wirklich nicht jedem bekannt. Immer wieder erscheinen Programme, die einen eigenen Assign auf das Programmverzeichnis benötigen...


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 11 Beiträge ] 

Alle Zeiten sind UTC


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Gehe zu: 

cron