Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Save dialog (https://www.delphipraxis.net/32883-save-dialog.html)

skaven 29. Okt 2004 09:24


Save dialog
 
Hallo zusammen, hab mal wieder ne Frage, lol.

Und zwar würde ich gerne fortlaufende Befehle aus der Variablen Liste[i] in einer textdatei speicher, aber das einzige was mein programm macht ist den opendialog zu saven, aber das will ichz nicht, er soll die neuen Meßwerte der variablen speichern.
Habt Ihr ne Idee.

Hänge mal einen Ausschnitt aus meinem Programm an.

Delphi-Quellcode:
    begin
    AssignFile(FromF, liste[i]);
    Reset(FromF, 1);   { Datensatzgröße = 1 }
  if SaveDialog1.Execute then          { Dialog zum Speichern anzeigen }
    begin
      AssignFile(ToF, SaveDialog1.FileName);   { Ausgabedatei öffnen }

      Rewrite(ToF, 1);   { Datensatzgröße = 1 }
      Canvas.TextOut(10, 10, 'Kopieren von ' + IntToStr(FileSize(FromF))
        + ' Byte...');
      repeat
        BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
        BlockWrite(ToF, Buf, NumRead, NumWritten);
      until (NumRead = 0) or (NumWritten <> NumRead);
        CloseFile(FromF);
        CloseFile(ToF);
    end;
   end;

Luckie 29. Okt 2004 09:27

Re: Save dialog
 
Hier stand Mist.

skaven 29. Okt 2004 09:34

Re: Save dialog
 
Das ist nicht das Problem, diese Funktion arbeitet auch mit meinem Programm.
Das Problem ist, das die gespeicherte Datei eine exakte Kopie der aufgerufenen Datei im open dialog entpricht.
Dabei sollte diese Datei nicht kopiert werden, sondern fortlaufende variablen werte der liste[i] gespeichert werden.

In der Zeile Reset wird mir immer ein Fehler angezeigt.

Steve 29. Okt 2004 10:05

Re: Save dialog
 
Liste[i] sind variable Werte? und AssignFile(FromF,Liste[i]) soll ne Datei öffnen?
Ich versteh nicht ganz, was Du machen möchtest, aber AssignFile erwartet als 2. Parameter den Dateinamen, d.h. Liste[i] muss einem Dateinamen entsprechen.. möchtest Du aber Liste[i] in eine Datei speichern, muss Du nur ToF erzeugen und dort Liste[i] reinschreiben... :)

Gruß
Stephan :dance:

skaven 29. Okt 2004 10:09

Re: Save dialog
 
Hi steve, habe das mit dem tof nicht verstanden,

was muß ich wo ändern?

Hab mal das Programm etwas abgeändert, aber wo muß ich da jetzt meine laufvariable einfügen, in der ich immer weider neue werte bekomme, und die ich hintereinander in einer datei speichern will.

Delphi-Quellcode:
 begin
   AssignFile(FromF, OpenDialog1.FileName);
    Reset(FromF, 1);   { Datensatzgröße = 1 }
  if SaveDialog1.Execute then          { Dialog zum Speichern anzeigen }
    begin
     AssignFile(ToF, SaveDialog1.FileName);   { Ausgabedatei öffnen }

   Rewrite(ToF, 1);   { Datensatzgröße = 1 }
     Canvas.TextOut(10, 10, 'Kopieren von ' + IntToStr(FileSize(FromF))
      + ' Byte...');
     repeat
       BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
       BlockWrite(ToF, Buf, NumRead, NumWritten);
     until (NumRead = 0) or (NumWritten <> NumRead);
       CloseFile(FromF);
       CloseFile(ToF);
   end;

Steve 29. Okt 2004 10:14

Re: Save dialog
 
Nunja, du brauchst kein FromF, da Du ja nix aus einer anderen Datei lesen willst, sondern lediglich schreiben, wenn ich Dich richtig verstanden hab... und schreiben musste dann statt Buf halt lines[i]. (Und ne Schleife über i) Falls Du nur Lines[i], welches wohl immer vom gleichen Typ ist, schreiben möchtest, würde ich an Deiner Stelle lieber eine Delphi-Referenz durchsuchentypisierte Datei benutzen und mit Delphi-Referenz durchsuchenWrite arbeiten.

Gruß
Stephan :dance:

skaven 29. Okt 2004 10:18

Re: Save dialog
 
Stimmt, ich will nur schreiben.

Möchet am Anfang des Programmes eine Datei auswählen in der ich speicher, und in dieser fortlaufende strings einlesen und saven.

Was ist denn dafür zu ändern?

Steve 29. Okt 2004 10:28

Re: Save dialog
 
Nur Strings schreiben? Dann nimm entweder ne StringList, die kannste mit Delphi-Referenz durchsuchenSaveToFile direkt und ohne "tiefer gehen" zu müssen speichern.
Oder nimm ein Delphi-Referenz durchsuchenTextFile, da kannste mit Delphi-Referenz durchsuchenWriteLn die Strings zeilenweise schreiben ;)

Ganz grob:
Delphi-Quellcode:
SL : TStringList;
F : TextFile;
...

//1. Möglichkeit:
SL.SaveToFile(aFileName);


//2. Möglichkeit:
AssignFile(F,aFileName);
Rewrite(F);
..
WriteLn(F,Lines[i]);
Closefile(F);
Gruß
Stephan :dance:

skaven 29. Okt 2004 10:50

Re: Save dialog
 
das mit dem writeln funktioniert nicht.

Fehlermeldung, ungültiger Typ. Obwohl es eine Stringvariable ist.

Steve 29. Okt 2004 11:10

Re: Save dialog
 
Sry, aber das muss so gehen!


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:49 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