Seite 1 von 3
Programm-Verzeichnis ermitteln
Verfasst: 28.10.2004 16:27
von Benubi
Hallo allerseits,
ich habe ein Problem mit meinem Executable und Unterverzeichnissen (glaube ich)... wenn ich meine exe starte, passiert nichts... vielleicht weil bei Add3DArchive("mesh") das Verzeichnis nicht gefunden wurde ?
Aus dem Interpreter heraus gestatert, läuft es wunderbar!
Bei mir sieht die Verzeichnisstruktur derzeit so aus:
+Mesh (Dir)
Meshtest.pb
Meshtest.exe
Frage:
Wie kann ich das Verzeichnis ermitteln, in dem das gestartete Programm gespeichert ist ?
Bei C++ steht es ja oft im ProgrammParameter 0 [Programmaufruf-string].
Gibt es einen "Dir()" Befehl, der mir das aktuelle Verzeichnis zurrückgibt ?
ist sicherlich ganz einfach, aber ich habe es noch nicht hinbekommen

Verfasst: 28.10.2004 16:40
von MVXA
Das aktuelle Verzeichniss kann mensch in der Demoversion mit dieser Funktion ermitteln:
Code: Alles auswählen
Procedure.s GetCurrentDirectory()
DefType.l FolderAdr, FunkCTO
*FolderAdr = AllocateMemory(255)
OpenLibrary(0, "kernel32.dll")
*FunkCTO = IsFunction(0, "GetCurrentDirectoryA")
CallFunctionFast(*FunkCTO, 255, *FolderAdr)
CloseLibrary(0)
ProcedureReturn PeekS(*FolderAdr,255)
EndProcedure
Verfasst: 28.10.2004 16:53
von Benubi
LittleFurz hat geschrieben:Das aktuelle Verzeichniss kann mensch in der Demoversion mit dieser Funktion ermitteln:
Code: Alles auswählen
Procedure.s GetCurrentDirectory()
DefType.l FolderAdr, FunkCTO
*FolderAdr = AllocateMemory(255)
OpenLibrary(0, "kernel32.dll")
*FunkCTO = IsFunction(0, "GetCurrentDirectoryA")
CallFunctionFast(*FunkCTO, 255, *FolderAdr)
CloseLibrary(0)
ProcedureReturn PeekS(*FolderAdr,255)
EndProcedure
Hi und danke für die schnelle antwort. ich habe meine demo-lition phase seit heute hinter mir

... ich nehme an es geht auch in der vollversion...
allerdings, und sei mir bitte nicht böse wenn ich das so direkt sagen muss:
das ist ein windows-abhängige funktion...
ich werde es aber vorübergehend benutzen.... danke!
meinst du dass man sowas dem entwickler-team vorschlagen sollte ??
Eine solche Funktion gehört doch eigentlich zum Basic-Standard, oder irre ich mich ?
mfG
Benubi
Verfasst: 28.10.2004 17:01
von MVXA
Frag mich nicht. in VB ermittelt man den Programmpfad mit APP.Path.
Wie man sowas mit Linux realisiert, hab ich keine Ahnung. In der Vollversion geht das ganze natürlich einfacher
Code: Alles auswählen
ProgrammPfad.s = Space(255)
GetCurrentDirectory_(255, @ProgrammPfad)
Zuerst Erstelle ich eine Variable und schreibe 255 mal ein Leerzeichen rein. Damit schaffe ich Platz, für die Funktion, die den Pfad in die Variable kopiert. Danach rufe ich die Funktion [c]GetCurrentDirectory_[/c] auf und übergebe die Größe und die Adresse der Variable [c]ProgrammPfad[/c]. Die Adresse einer Variable kann man immer mit einem @ vor dem Variablenamen ermitteln. Das funktioniert übrigens auch mit Funktionen

Verfasst: 28.10.2004 17:33
von Benubi
LittleFurz hat geschrieben:Frag mich nicht. in VB ermittelt man den Programmpfad mit APP.Path.
jau. es gibt aber einen basic-standardbefehl, bei fast allen basic-sprachen, der lautet "Dir()" oder "Dir$()" o.Ä.
(bei VB übrigens auch. App.Path gibt hier den Programmpfad zurrück, nicht das aktuelle... bei meinem problem wäre das aber beides gleich)...
Wie man sowas mit Linux realisiert, hab ich keine Ahnung. In der Vollversion geht das ganze natürlich einfacher
Code: Alles auswählen
ProgrammPfad.s = Space(255)
GetCurrentDirectory_(255, @ProgrammPfad)
Space(255)... *gg* windows...
danke für die tipps... das mit den zeigern ist übrigens ein grund, weshalb ich eurer "religiösen bewegung" beigetreten bin... habe mit pb schon viel rumgezeigt
bis denne,
Benubi
Verfasst: 28.10.2004 17:42
von DarkDragon
Benubi hat geschrieben:meinst du dass man sowas dem entwickler-team vorschlagen sollte ??

kann man eine Person als Team bezeichnen?

Fred ist unser Gott, merk dir das.
Verfasst: 28.10.2004 17:43
von MVXA
muss Fred vergöttern...

Verfasst: 28.10.2004 18:02
von Benubi
Brüder und Schwestern, heute ist der Tag gekommen, an dem ich feststelen muss, dass wir alle im Glauben vereint sind

Verfasst: 28.10.2004 18:11
von helpy
Hab zwar die Smilies gesehen, ...
DarkDragon hat geschrieben:Fred ist unser Gott, merk dir das.
... aber ich hab' trozdem was gegen "Vergötterung" ... auch wenn's nur zum Spass ist.
Benubi hat geschrieben:Brüder und Schwestern, heute ist der Tag gekommen, an dem ich feststelen muss, dass wir alle im Glauben vereint sind

Es gibt bessere Grundlagen für Einheit!
cu, helpy
Verfasst: 28.10.2004 18:12
von wichtel
Bruder, in linux geht das so:
Code: Alles auswählen
Procedure.s GetEnv(Variable$)
Protected *Environ.LONG
!extrn _environ
!MOV eax, [_environ]
!MOV [esp+4], eax
Variable$ + "="
While *Environ\l <> 0
If CompareMemoryString(@Variable$, *Environ\l, 0, Len(Variable$)) = 0
ProcedureReturn PeekS(*Environ\l + Len(Variable$))
EndIf
*Environ + 4
Wend
ProcedureReturn ""
CompilerEndIf
EndProcedure
OpenConsole()
PrintN("machwas")
PrintN( GetEnv("PWD"))
CloseConsole()
(nicht von mir)