AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SaveDialog - Add statt Overwrite

Ein Thema von Z4ppy · begonnen am 14. Mai 2008 · letzter Beitrag vom 15. Mai 2008
Antwort Antwort
Seite 1 von 2  1 2      
Z4ppy

Registriert seit: 25. Apr 2008
269 Beiträge
 
Delphi 7 Enterprise
 
#1

SaveDialog - Add statt Overwrite

  Alt 14. Mai 2008, 15:02
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...
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: SaveDialog - Add statt Overwrite

  Alt 14. Mai 2008, 15:04
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
Klaus
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: SaveDialog - Add statt Overwrite

  Alt 14. Mai 2008, 15:07
Wie schreibst du die Datei?
Du könntest mit Text Append() verwenden
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: SaveDialog - Add statt Overwrite

  Alt 14. Mai 2008, 15:08
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#5

Re: SaveDialog - Add statt Overwrite

  Alt 14. Mai 2008, 15:10
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.
  Mit Zitat antworten Zitat
Z4ppy

Registriert seit: 25. Apr 2008
269 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: SaveDialog - Add statt Overwrite

  Alt 14. Mai 2008, 15:15
Danke
Aber: Compiler meckert ziemlich...
1. "Function needs result type" << is klar...
2. "Variable required" << das 2mal, bei folgenden Zeilen:
filestream.write(pchar(nl),2); filestream.write(pchar(s),length(s)); 1. kann ich natürlich selber reparieren, 2. leider net... Kann mir da noch jemand helfen?

MfG Z4ppy
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: SaveDialog - Add statt Overwrite

  Alt 14. Mai 2008, 15:17
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.
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#8

Re: SaveDialog - Add statt Overwrite

  Alt 14. Mai 2008, 15:17
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.
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: SaveDialog - Add statt Overwrite

  Alt 14. Mai 2008, 15:19
Solltest du die FileStreams verwenden, müsste der 2. Parameter beim Create aber fmOpenWrite sein, oder?
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
Z4ppy

Registriert seit: 25. Apr 2008
269 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: SaveDialog - Add statt Overwrite

  Alt 14. Mai 2008, 15:20
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...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 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