AppDirectory Ermitteln!

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> Diese Dinge sind leider nicht Plattformübergreifend

es ist ja jetzt nicht so, dass in PB nur plattformübergreifende Befehle implementiert sind. ;-)

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Okay, es gibt 3 nur Windows Libs: OnError, Printer und Systray, ansonsten werden reine Windows-Funktionen schon sehr vernachläßigt. Ein Wunder das jetzt endlich das normalste unter Windows ein bissel unterstützt wird, nämlich Resourcen.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

@Wölfli (sry, aber hwasweissichwaswolf kann ich mir zum verrecken nicht merken... :oops: ): Hmm, aus der Sicht hatte ich das noch gar nicht betrachtet... Hab das ganze wohl etwas subjektiv betrachtet... Demnach: Entschuldigung, Wölfli! :D

@Al90: ich verstehe ja, dass es gut gemeint war, aber wenn du solche einfachen WinAPI-Funktionen im Code, Tripps & Tricks-Bereich posten willst, dann fasse doch bitte in Zukunft mehrere Befehle zusammen, ja? Da ist bedeutend übersichtlicher... Gegen das Vorhaben an sich, solche nützlichen, kleinen Codeschnipsel zu posten, ist gar nix inzuwenden, nur sollten sie halt nicht das Forum überschwemmen, sondern in möglichst wenigen Threads zusammengefasst sein. (Solange es sich nicht um zu Labnge Codes handelt)
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Beitrag von al90 »

hardfalcon hat geschrieben:
[...]aber wenn du solche einfachen WinAPI-Funktionen im Code, Tripps & Tricks-Bereich posten willst, dann fasse doch bitte in Zukunft mehrere Befehle zusammen, ja?
Ja an die idee hatte ich zunächst auch schon gedacht, aber dann dachte
ich mir das es das suchen nach bestimmten dingen nur erschweren
könnte, da man ja nur einen Betreff angeben kann. Deshalb wäre es
mir auch lieber gewesen wenn es sowas wie eine sammelstelle für Codes
gibt, aus die Andre später alles benötigte rausziehen kann um ein neues
CodeArchiv zusammenzustellen. Naja ich muss mir mal was überlegen
wie man es noch verbessern/vereinfachen kann. :wink:
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

zum Titel eines zusammenfassenden Threads:
mach doch "BefehlA() / BefehlB() / BefehlC() / BefehlD() / BefehlE()".
So solltest du schon recht viel zusammenkriegen... :allright:
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Re: AppDirectory Ermitteln!

Beitrag von rolaf »

al90 hat geschrieben:

Code: Alles auswählen


; Ermittelt das Verzeichnis des gestarteten Exe-Files!

Procedure.s GetAppDir()
a$=Space(2048)
x=GetModuleFileName_(0,@a$,Len(a$))
b$=GetPathPart(PeekS(@a$))
If Right(b$,1)<>"":b$+"":EndIf
ProcedureReturn b$
EndProcedure

appdir$=GetAppDir()
Debug appdir$
Wobei mich dabei gewaltig stört das in der Entwicklung nicht das Verzeichnis in der die Anwendung erstellt wird als Ergebnis erscheint sondern:

C:\Programme\PureBasic\Compilers\

Insbesondere zum Testen ist das Mumpitz, wäre besser wenn PB gleich im Entwicklungsverzeichnis kompiliert (kann man das evt. einstellen?).
:::: WIN 10 :: PB 5.73 :: (x64) ::::
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

@Falo: das Programm arbeitet ja völlig korrekt, und "on-the-fly"-Komplierungen werden halt im Compilers-Ordner durchgeführt. Wäre eventuell besser, wenn PB dafür ein extra Temp-Verzeichnis hätte, das man regelmässig leeren kann (von Programmen die nicht gelöscht wurden, weil z.B. der Rechner aufgrund eines Bugs abgeschmiert ist...). Aber ich hab den "On-the-fly-Müll" lieber in einem einzigen, globalen (Temp-)Verzeichnis, als immer in dem Ordner, in dem ich die Anwendung entwickle. Sonst mülle ich mir ja das Verzeichnis total zu...
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Beitrag von al90 »

@hardfalcon

Werde ich auch so machen, sofern ich mit der (begrenzten) Betreff-Länge hinkomme.
Anderfalls werde ich erstmal ein paar sachen zusammencoden und dann
mehrere Codes in Kategorien einteilen. Z.B für "Memory-Befehle" oder so.
Ist wohl noch die beste lösung.
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

Guter Vorsatz, Al90! :D
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Hier mal meine Version, aus meiner Bausteinsammlung. Unterschied ist folgender: Es wird auch in der IDE der richtige Pfad ermittelt, wichtig für INI-Dateien usw.

Code: Alles auswählen

Procedure.s GetExePath()
  Prg.s = Space(#MAX_PATH)
  GetModuleFileName_(GetModuleHandle_(0), @Prg, #MAX_PATH)
  Prg = GetPathPart(Prg)
  If (FindString(prg,"\PureBasic\Compilers\", 1))
    Prg.s = Space(#MAX_PATH)
    GetCurrentDirectory_(#MAX_PATH,@Prg)
  EndIf
  If Right(Prg, 1) <> "\" : Prg + "\" : EndIf
  ProcedureReturn Prg
EndProcedure
Also beim Compilieren in der IDE wird einfach geschummelt, da die IDE autom. CurrentDirectory setzt. :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten