Announcement

Collapse
No announcement yet.

Tempverzeichnis ermitteln und Textdatei reinschreiben?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Tempverzeichnis ermitteln und Textdatei reinschreiben?

    Hallo,

    wie kann ich das lokale Tempverzeichnis ermitteln und eine Textdatei reinschreiben? Ich habe in der Hilfe schon GetTempPath endeckt, weiss aber nicht wie es geht.

    M.f.G. Andreas Käding

  • #2
    Hallo,

    das folgende Beispiel demonstriert den Einsatz von GetTempPath und GetTempFileName, indem der Dateiname für die neue (eindeutige) temporäre Datei <b>angelegt</b> und angezeigt wird:
    <pre>
    procedure TForm1.Button1Click(Sender: TObject);
    var
    szTmpDir : array[0..255] of Char;
    szTmpFile: array[0..299] of Char;
    begin
    FillChar(szTmpDir, SizeOf(szTmpDir), #0);
    FillChar(szTmpFile, SizeOf(szTmpFile), #0);
    GetTempPath(SizeOf(szTmpDir), szTmpDir);
    GetTempFileName(szTmpDir, 'tmp', 0, szTmpFile);
    ShowMessage(szTmpFile);
    end;
    </pre>
    Übergibt man beim Aufruf von GetTempFileName als 3. Parameter den Wert 0, so legt dieser Aufruf die Datei automatisch an. Man dann danach direkt darauf zugreifen

    Comment


    • #3
      Danke, aber wie kann ich den Namen der Datei selbst vergeben und den Text in die Datei eintragen

      Comment


      • #4
        Hallo,

        wenn man den Namen selbst vergeben will, muss man vorher prüfen, ob es nicht bereits eine Datei mit diesem Namen gibt. Um diese manuelle Mehrarbeit zu umgehen, stellt die Win32-API-Funktion GetTempFileName einen bequemen Ausweg zur Verfügung. Gibt es irgend einen vernüftigen Grund, warum eine temporäre Datei einen definierten Namen verwenden soll?

        Das Anhängen einer Textzeile ist schnell erledigt:
        <pre>
        procedure TForm1.Button1Click(Sender: TObject);
        var
        szTmpDir : array[0..255] of Char;
        szTmpFile: array[0..299] of Char;
        aFile : TextFile;
        begin
        FillChar(szTmpDir, SizeOf(szTmpDir), #0);
        FillChar(szTmpFile, SizeOf(szTmpFile), #0);
        GetTempPath(SizeOf(szTmpDir), szTmpDir);
        GetTempFileName(szTmpDir, 'tmp', 0, szTmpFile);
        AssignFile(aFile, szTmpFile);
        Append(aFile);
        WriteLn(aFile, 'Das ist ein Testeintrag');
        CloseFile(aFile);
        ShowMessage('Fertig');
        end;
        </pre&gt

        Comment


        • #5
          Hallo,

          Vielen Dank für die Antwort. Es ist aber eine Vorgabe, den Namen selbst zu vergeben.
          Ich muss bei Ausführung von Importsequenzen in meine Datenbank die dynamisch zusammengesetzten SQL-Statements in eine Textdatei ins Tempverzeichnis schreiben, als Namen sollen diese jeweils die Uhrzeit haben

          Comment


          • #6
            Hallo,

            wenn das so ist, kann man sich über <b>Format</b> einen Dateinamen selbst zusammenbauen und mit <b>FileExist</b> prüfen, ob es diesen schon gibt.
            <pre>
            sFile = Format('%s\MeinName%d.txt', [sTempDir, DayOfWeek(Date)]);
            </pre>
            Der Aufruf von GetTempFileName entfällt dann und der Aufruf von <i>Append(aFile)</i> wird durch <i>ReWrite(aFile)</i> ersetzt (damit die Datei neu angelegt wird)

            Comment

            Working...
            X