Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Temporäre Datei (https://www.delphipraxis.net/60731-temporaere-datei.html)

rowkajjh 11. Jan 2006 18:29


Temporäre Datei
 
Hallo,

irgendwie ging es doch, daß man von Windows einen Dateinamen bekommt, mit dem man eine temporäre Datei erstellen kann. Ich komme bloß nicht drauf.

Wisst ihr, wie die Funktion heißt?

Danke!

sir-archimedes 11. Jan 2006 18:36

Re: Temporäre Datei
 
Ich hab das irgendwann mal so gemacht:

Delphi-Quellcode:
function GetTempPath:string;
Var TmpString : String;
begin
  SetLength(TmpString, 255);
  SetLength(TmpString,Windows.GetTempPath(Length(TmpString),PChar(TmpString)));
  TmpString := TmpString + 'mmp_manager\';
  Result := TmpString;
end;

Function GetTempFileName(Pre : String) : String;
Var TmpStr : PChar;
    P : Integer;
Begin
  SetLength(Result, 255);
  Windows.GetTempFileName(PChar(GetTempPath), PChar(Pre),0,PChar(Result));
  P := Pos(#0, Result);
  If P > 0 Then
    Delete(Result, P, Length(Result)-P+1);
  Result := Trim(Result);
End;
HtH,
Dominik

Luckie 11. Jan 2006 18:48

Re: Temporäre Datei
 
Was löscht du denn da noch zum Schluss?

sir-archimedes 11. Jan 2006 19:22

Re: Temporäre Datei
 
Ich erzeuge ja erst einen String der fixen Länge 255. Dann wird der mit Daten gefüllt und null-terminiert. Das heißt ab einem Index steht nur noch Müll dadrin. Und den Kram schmeiße ich am Ende raus.

Bei mir funktioniert das so sehr gut :-)

Luckie 11. Jan 2006 19:27

Re: Temporäre Datei
 
Kein Müll:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  buffer: array[0..MAX_PATH] of Char;
begin
  GetTempFileName('d:\', '~', 0, buffer);
  ShowMessage(String(buffer));
end;

sir-archimedes 11. Jan 2006 19:41

Re: Temporäre Datei
 
Hmm... komisch! :gruebel:

Ich weiß noch, dass ich als ich das mal geschrieben habe, mit irgendwas Probleme hatte. Keine Ahnung aber mehr. Kannst du denn deinen Buffer auch ohne weiteres als String zurückgeben? Müsste doch eigenltich...

Naja - bei mir ist es in irgendeiner Tools-Unit verschwunden und ich nutze die Funktion ohne noch weiter darüber nachgedacht zu haben, wieso ich das mal so implementiert habe ;-)

Gruß,
Dominik


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:02 Uhr.

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