Seite 1 von 1

[gelöst] Startverzeichnis von PureBasic ermitteln

Verfasst: 05.07.2013 18:34
von derschutzhund
Ist bestimmt eine Standardfunktion aber ich kann dazu nichts finden :oops:

Ich möchte ermitteln in welchem Verzeichnis sich PureBasic befindet bzw. aus welchem es gestartet wurde (also z.B. "D:\Programme\PureBasic\PureBasic.exe")

Re: Startverzeichnis von PureBasic ermitteln

Verfasst: 05.07.2013 18:46
von bizzl
Sieh mal in der Hilfe nach unter "Compiler-Direktiven"

Ziemlich weit unten stehen Compilerkonstanten,unter anderem auch
#PB_Compiler_Home

Ist es das, was du meinst ?

Re: Startverzeichnis von PureBasic ermitteln

Verfasst: 05.07.2013 19:12
von derschutzhund
Joo! Das läuft!

Einen hab ich noch... :cry:
Wie kann ich in eine Textdatei ein " schreiben?
Wenn ich das Anführungszeichen in einen String schreibe, dann ist das ja immer das Ende des Textes!
Ich kenne es von anderen Programmiersprachen so, dass es vor einem " ein Sonderzeichen gibt um dem Compiler zu sagen,
dass es als Zeichen ausgegeben werden soll!

Re: Startverzeichnis von PureBasic ermitteln

Verfasst: 05.07.2013 19:16
von RSBasic
Es gibt mehrere Möglichkeiten, z.B. mit Chr(34).

Re: Startverzeichnis von PureBasic ermitteln

Verfasst: 05.07.2013 20:33
von derschutzhund
Ok, das is jetzt auch klar!

Teste gerade mein NDW-Programm (near Delphi work) :D

Die Version 1 ist nun fertig und im Grunde läuft es so wie gedacht.
Also:
1. Oberfläche mit dem Formdesigner erstellen
2. eine Ereignisprozedure in die Eigenschaften rechts eintragen

3. da ich es noch nicht schaffe diesen Procedurenamen zu übergeben wechsle ich mit einer Taste in die Codedarstellung der .pbf und markiere da den Procedurenamen
4. mit Tastenfunktion mein NDW starten wobei dann:
- nach einer *.pb gesucht wird die den gleichen Namen wie die *.pbf hat.
- wird sie nicht gefunden wird sie automatisch neu erzeugt und auch gleich die Procedure eingefügt
- wird sie gefunden dann prüfe ich ob die Procedure schon vorhanden ist:
- wird die Proz. nicht gefunden erzeuge ich sie
- wird sie gefunden dann setze ich einfach die Cursorposition darauf
5. die neue oder geänderte *.pb wird neu geladen wobei der Cursor auf der Position der Procedure steht.

Jetzt ist mir ein merkwürdiger Effekt aufgefallen.
Ist die *.pb nicht geladen wird sie wie gewünscht sofort geladen was ja zeigt, dass mein Programm grundsätzlich erst mal ok ist.

Ist sie aber bereits geladen dann gibt es ein Problem.
Wenn ich bei den Editoreinstellungen "offene Dateien auf Änderungen prüfen" aktiviere dann kommt nach der Änderung eine Info und ich kann wählen das die geänderte Datei neu geladen wird.
Mache ich das nicht, bleibt die alte Version geladen.

Auch wenn ich die Datei extern mit einem Editor ändere und sie dann von Hand lade bleibt die alte Version im Editor.
Das muss irgendwie eine Sache der Einstellungen sein oder ist das ein Bug?

LG

Wolfgang

Re: Startverzeichnis von PureBasic ermitteln

Verfasst: 05.07.2013 23:56
von derschutzhund
Habe noch etwas experimentiert.
Wenn ich von Hand Datei - Datei neu laden anklicke dann wird die betreffende *.pb aktualisiert.
Gibt es eine Möglichkeit dies auch zu erzwingen wenn es mit der Funktion:

Code: Alles auswählen

RunProgram(#PB_Compiler_Home + "compilers/purebasic",pb_path$ + pb_name$ + ".pb","")
geladen wird?
Habe dazu keinen Parameter etc. gefunden!

Re: Startverzeichnis von PureBasic ermitteln

Verfasst: 06.07.2013 11:20
von derschutzhund
RSBasic hat geschrieben:Es gibt mehrere Möglichkeiten, z.B. mit Chr(34).
perfekt!

Re: [gelöst] Startverzeichnis von PureBasic ermitteln

Verfasst: 14.07.2013 20:53
von Bisonte
zu dem #PB_Compiler_Home noch eine Bemerkung (weil ich es auch schonmal vergeigt hatte ;) ) :

Diese Konstante ist eine Konstante !

Also nach dem kompilieren ist der Pfad fest. Und nicht jeder hat genau die gleichen Einstellungen wie Du. Um den Pfad während
der Laufzeit zu ermitteln gibt es andere Wege, wie z.B. wenn es als externes Tool gestartet wird über die ENV Variablen.

Re: [gelöst] Startverzeichnis von PureBasic ermitteln

Verfasst: 14.07.2013 22:20
von derschutzhund
Bisonte hat geschrieben:zu dem #PB_Compiler_Home noch eine Bemerkung (weil ich es auch schonmal vergeigt hatte ;) ) :

Diese Konstante ist eine Konstante !

Also nach dem kompilieren ist der Pfad fest. Und nicht jeder hat genau die gleichen Einstellungen wie Du. Um den Pfad während
der Laufzeit zu ermitteln gibt es andere Wege, wie z.B. wenn es als externes Tool gestartet wird über die ENV Variablen.
Das ist wirklich ein guter Tipp!
In NDW verwende ich #PB_Compiler_Home um zu testen in welchem Verzeichnis PB befindet. Mit ENV komme ich nicht zurecht! Die Hilfe bringt mich nicht weiter!

Ich habe übrigens versucht den Procedurenamen mit proz$=GetClipboardText() an Stelle von WORD% aus dem Eigenschaftsfenster rechts in NDW zu lesen. Also erst mit Ctrl + C in das Clipboard kopieren und dann übernehmen. Das geht grundsätzlich. Man muss dann nichtmehr erst in den code von .pbf wechseln. Die Anzahl an Tastenkürzel bleibt allerdings gleich.
Schade, dass es keine Art Macros oder so etwas gibt. Also über ein Tastenkürzel der Reihe nach mehrere Tastenfunktionen ausführen.

Re: [gelöst] Startverzeichnis von PureBasic ermitteln

Verfasst: 14.07.2013 23:41
von Bisonte
Beispiel für Kompilerpfad aus ENV Variable :

Code: Alles auswählen

PBCompiler.s = GetEnvironmentVariable("PB_TOOL_Compiler")
Compiler_Home.s = RemoveString(LCase(PBCompiler), "compilers\pbcompiler.exe")
Der komplette Pfad ist in PBCompiler.s (inkl. exe) und Compiler_Home.s ist hier das äquivalent zu #PB_Compiler_Home,
nur halt "während" der Laufzeit.

Aber auch hier gilt : Nur wenn als externes Tool von der IDE aus gestartet wird, sind die Env-Variblen zu haben.