Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Umgebungsvariablen in Delphi nutzen (https://www.delphipraxis.net/104950-umgebungsvariablen-delphi-nutzen.html)

gunfran 13. Dez 2007 08:50


Umgebungsvariablen in Delphi nutzen
 
Hallo Leute.

Ich habe grad ein vermutlich recht triviales Problem, aber irgendwie find ich nicht raus wie es geht. Ich möchte in einem Delphi-Programm eine Log-Datei zu Debug-Zwecken schreiben. Hierzu möchte ich es vermeiden in dem Code einen festen Pfad zu verwenden, sondern würde gerne die Systemumgebungsvariable TEMP benutzen um den Pfad-string für die Datei zu erzeugen. Kann mir jemand zeigen, wie ich an die Information komme? Muss ich da dann eigentlich immer überprüfen, ob das letzte Zeichen des Strings der TEMP-Variable ein \ ist?

Ich hoffe ich habe mich verständlich ausgedrückt und bedanke mich schonmal im voraus für die Antworten.

Gruß

Michael

DeddyH 13. Dez 2007 08:55

Re: Umgebungsvariablen in Delphi nutzen
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var s: string;
begin
  SetLength(s,MAX_PATH); //evtl. großzügiger sein
  GetTempPath(Length(s) - 1,PChar(s));
  SetLength(s,StrLen(Pchar(s)));
  ShowMessage(s);
end;

Muetze1 13. Dez 2007 09:25

Re: Umgebungsvariablen in Delphi nutzen
 
Ansonsten für die direkten Fragen:

1. Delphi-Referenz durchsuchenGetEnvironmentVariable()
2. Wegen dem abschließendem Backslash: Delphi-Referenz durchsuchenIncludeTrailingPathDelimiter() bzw. Delphi-Referenz durchsuchenExcludeTrailingPathDelimiter()

Nutze aber für 1. lieber diese abgeänderte Version von DeddyH's gelieferte Lösung_

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var s: string;
begin
  SetLength(s, MAX_PATH);
  SetLength(s, GetTempPath(MAX_PATH - 1, PChar(s)));
  ShowMessage(s);
end;
@DeddyH: Warum nochmal Length() wenn du weißt wie lang (als Konstante vorliegen)? Und StrLen() kostet neben der temporären PChar Konvertierung nochmals mehr Zeit, dabei liefert GetTempPath() die Anzahl der eingetragenen Zeichen zurück.

gunfran 13. Dez 2007 09:50

Re: Umgebungsvariablen in Delphi nutzen
 
Vielen Dank für die Hilfe.

Das hiflt mir sehr weiter. Ihr seid spitze.

gunfran 19. Feb 2009 13:42

Re: Umgebungsvariablen in Delphi nutzen
 
Hello again.

Ich steh grad wieder ein bisschen auf dem Schlauch. Ich habe diesen Code so wie ihn "Muetze1" erfolgreich in Delphi 7 Pro verwendet. Alles prima.

Jetzt habe ich den Code in Turbo Delphi 2006 Proffesional für Win 32 reinkopiert und er meckert sowohl "MAX_PATH" als auch "GetTempPath" als nicht deklarierten Bezeichner an. Ich denke mir fehlt da eine unit, aber ich weiss leider nicht welche. Hat jemand eine Ahnung, warum er auf diese Weise nicht mehr den TEMP-Pfad finden mag.

Danke im voraus.

DeddyH 19. Feb 2009 13:46

Re: Umgebungsvariablen in Delphi nutzen
 
Ruf doch einfach "GetTempPath" in der Hilfe auf, da steht dann normalerweise auch die enthaltende Unit.

sirius 19. Feb 2009 13:47

Re: Umgebungsvariablen in Delphi nutzen
 
unit windows

gunfran 19. Feb 2009 13:52

Re: Umgebungsvariablen in Delphi nutzen
 
Ich hab den Begriff in der Suche eingegeben, aber komischerweise kein Ergebnis gefunden. Gewundert hatte mich das auch, aber wie immer seid ihr schneller als die Polizei erlaubt. Das ist echt wahnsinn. Herzlichen Dank.

p.s. Ich schliesse natürlich nicht aus, dass ich zu doof war das richtige Ergebnis in der Hilfe zu finden. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz