Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi SaveDialog - Add statt Overwrite (https://www.delphipraxis.net/113777-savedialog-add-statt-overwrite.html)

Z4ppy 14. Mai 2008 15:02


SaveDialog - Add statt Overwrite
 
Ich weiss, der Threadtitel is nicht ganz optimal, aber das, was ich ursprünglich eingeben wollte, ist zu lang..

Mein Prob:
Per SaveDialog soll eine Datei ausgewählt/ein Dateiname eingegeben werden. Dann will ich in mehreren Schritten Sachen in die Datei speichern. Die Daten sollen jeweils hinten angefügt werden... So wie bei PHP fopen mit Parameter a(+)
Hier mal ein Beispiel:
In der Datei abc.txt steht das:
Zitat:

Hallo
paperlapapp
Nun soll "bla" hinzugefügt werden, sodass da dann nachher steht:
Zitat:

Hallo
paperlapapp
bla
Wie geht das?

MfG Z4ppy

PS.: NEIN, ich will das nicht mit einem Memo lösen, wo ich die Daten reinlade und dann wieder abspeicher...
PS2.: Benutze Delphi 7...

Klaus01 14. Mai 2008 15:04

Re: SaveDialog - Add statt Overwrite
 
Hallo,

Du könntest eine StringList nehmen und da die Datei hineinladen
und Zeilen hinzufügen.
Oder Du schaust Dir append an.

Grüße
Klaus

mkinzler 14. Mai 2008 15:07

Re: SaveDialog - Add statt Overwrite
 
Wie schreibst du die Datei?
Du könntest mit Text Append() verwenden

Luckie 14. Mai 2008 15:08

Re: SaveDialog - Add statt Overwrite
 
Zitat:

Zitat von Z4ppy
Ich weiss, der Threadtitel is nicht ganz optimal, aber das, was ich ursprünglich eingeben wollte, ist zu lang..

Zum einem hat der Dialog überhaupt nichts mit dem Speichern zu tun, er gibt dir nur einen Dateinamen und zweitens warum ist der Titel zu lang: "Zeilen an Textdatei anhängen"?

Und wenn man den Threadtitel in der suche eingibt, findet man eventuell schon was brauchbares.

Namenloser 14. Mai 2008 15:10

Re: SaveDialog - Add statt Overwrite
 
Das geht auch mit Streams:
Delphi-Quellcode:
function AddStringToFile(const s: string; const filename: string; newline: boolean=true)
var
  filestream: tfilestream;
  nl: string;
begin
  filestream := tfilestream.create(filename,fmCreate);
  try
    filestream.position := filestream.size;
    if newline then
    begin
      nl := #13#10;
      filestream.write(pchar(nl),2);
    end;
    filestream.write(pchar(s),length(s));
  finally
    filestream.free;
  end;
end;
Aus dem Kopf in den Beitragseditor getippt, also ohne Gewähr.

Z4ppy 14. Mai 2008 15:15

Re: SaveDialog - Add statt Overwrite
 
Danke :)
Aber: Compiler meckert ziemlich...
1. "Function needs result type" << is klar...
2. "Variable required" << das 2mal, bei folgenden Zeilen:
Delphi-Quellcode:
filestream.write(pchar(nl),2);
Delphi-Quellcode:
filestream.write(pchar(s),length(s));
1. kann ich natürlich selber reparieren, 2. leider net... Kann mir da noch jemand helfen?

MfG Z4ppy

Fussball-Robby 14. Mai 2008 15:17

Re: SaveDialog - Add statt Overwrite
 
Ich denke, es ist einfacher mit TStrings.
Delphi-Quellcode:
function AddStringToFile(const Text: String; const FileName: String): Boolean;
var
  List: TStrings;
begin
  Result := False;
  if not FileExists(FileName) then
    Exit;
  List := TStringList.Create;
  try
    List.LoadFromFile(FileName);
    List.Add(Text);
    List.SaveToFile(FileName);
    Result := True;
  finally
    List.Free;
  end;
end;
Beim nächsten mal aber bite vorher suchen, das gab es hier schon dutzende male.

Namenloser 14. Mai 2008 15:17

Re: SaveDialog - Add statt Overwrite
 
1. Sry, ich meinet natürlich procedure, nicht function
2. Das wundert mich. Probier es mal ohne pchar(). Wenn das immer noch nicht klappt, probier s[1] bzw nl[1].

[add] TStrings lädt aber die gesamteDatei in den Arbeitsspeicher. Ein Filestream nicht.

Fussball-Robby 14. Mai 2008 15:19

Re: SaveDialog - Add statt Overwrite
 
Solltest du die FileStreams verwenden, müsste der 2. Parameter beim Create aber fmOpenWrite sein, oder? :gruebel:

Z4ppy 14. Mai 2008 15:20

Re: SaveDialog - Add statt Overwrite
 
Danke, NamenLozer... Ohne PChar gehts wunderbar :)

MfG Z4ppy

[ADD] oO geht doch nicht :( Also der Compiler gibt zwar keine Warnung aus, aber in der Datei steht dann nur Datenmüll...


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:51 Uhr.
Seite 1 von 2  1 2      

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