AMIGA-RESISTANCE
https://forum.amiga-resistance.info/

Start- und Zugriffsverzeichnis
https://forum.amiga-resistance.info/viewtopic.php?f=38&t=1897
Seite 1 von 1

Autor:  Tipsi [ 01 Nov 2008, 11:56 ]
Betreff des Beitrags:  Start- und Zugriffsverzeichnis

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

Autor:  Clyde [ 01 Nov 2008, 21:58 ]
Betreff des Beitrags: 

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ß!

Autor:  Tipsi [ 01 Nov 2008, 23:11 ]
Betreff des Beitrags: 

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

Autor:  Clyde [ 01 Nov 2008, 23:15 ]
Betreff des Beitrags: 

:-) 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!

Autor:  Tipsi [ 16 Nov 2008, 22:06 ]
Betreff des Beitrags: 

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

Autor:  Clyde [ 16 Nov 2008, 22:10 ]
Betreff des Beitrags: 

Ah ja, prima Abkürzung! Danke für den Hinweis!

Wie kommst Du denn mit Deinem Projekt voran?

Gruß,
Clyde

Autor:  thomas [ 17 Nov 2008, 08:13 ]
Betreff des Beitrags: 

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

Autor:  Tipsi [ 17 Nov 2008, 18:01 ]
Betreff des Beitrags: 

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

Autor:  thomas [ 18 Nov 2008, 12:48 ]
Betreff des Beitrags: 

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

Autor:  Clyde [ 18 Nov 2008, 13:57 ]
Betreff des Beitrags: 

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!

Autor:  p-OS [ 27 Nov 2008, 10:08 ]
Betreff des Beitrags: 

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...

Seite 1 von 1 Alle Zeiten sind UTC

Powered by phpBB® Forum Software © phpBB Limited

Deutsche Übersetzung durch phpBB.de