Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Eine über vst.savetofile gespeicherte Datei mit weiteren Infos ergänzen (https://www.delphipraxis.net/161246-eine-ueber-vst-savetofile-gespeicherte-datei-mit-weiteren-infos-ergaenzen.html)

frieder2008 24. Jun 2011 08:33

Eine über vst.savetofile gespeicherte Datei mit weiteren Infos ergänzen
 
Morgen zusammen,

habe folgendes Problem, bei dem ich nicht weiterkomme: Ich speichere via vst.savetofile und vst.savenode/loadnode erfolgreich die Daten eines VirtualStringTrees. Neben den vst-Daten möchte ich aber noch 2 weitere Strings idealiter in die gleiche Datei speichern. Ich vermute, dass das irgendwie via Streams funktionieren könnte, aber ich habe keine Ahnung, wie... Hat jemand einen Ansatz für mich?

Danke und schöne Grüße,
frieder

generic 24. Jun 2011 08:46

AW: Eine über vst.savetofile gespeicherte Datei mit weiteren Infos ergänzen
 
In den Stammtisch Videos bzw. in deren Demos hab ich das Streaming gezeigt.
http://www.delphipraxis.net/104739-s...tml#post712774

Videos:
http://www.delphipraxis.net/152972-s...ch-videos.html

jaenicke 24. Jun 2011 08:50

AW: Eine über vst.savetofile gespeicherte Datei mit weiteren Infos ergänzen
 
Ich habe den Link jetzt nicht angeschaut, aber eigentlich ist es einfach:
Du kannst einfach einen FileStream selbst erstellen und vst.SaveToStream benutzen. Vor den VST-Daten solltest du die eigenen speichern und beim Laden auch wieder auslesen. Da dann die Position nach diesen Daten steht, werden die VST-Daten einfach normal ab dieser Position gelesen und geschrieben.

frieder2008 24. Jun 2011 09:38

AW: Eine über vst.savetofile gespeicherte Datei mit weiteren Infos ergänzen
 
Danke für die Hinweise. Die Videos sind leider nicht mehr on.

Das mit vst.savetostream habe ich zuvor schon mal versucht, aber da hatte es einfach nicht geklappt. Jetzt hats geklappt! Falls es mal ein weiterer Anfänger braucht: :-D

Delphi-Quellcode:
//vst + weiteren String in Stream speichern
procedure TForm1.Button8Click(Sender: TObject);
var
  zusatzStr: string;
  stream: tstream;
  len: integer;
begin
  savedlg.execute;
  if fileexists(savedlg2.FileName) then
    if messagedlg('Die Datei existiert bereits. Überschreiben?', mterror, [mbyes, mbno], 0) = mrno then
      exit;

  stream:= TFileStream.Create(savedlg2.filename, fmCreate);

  try
    zusatzStr:= edit1.text;
    Len := Length(zusatzStr);
    Stream.write(Len, SizeOf(Len));
    Stream.write(PChar(zusatzStr)^, Len);

    vst.SaveToStream(stream);
  finally
    stream.free;
  end;
end;


//vst + weiteren String laden
procedure TForm1.Button9Click(Sender: TObject);
var
  zusatzStr: string;
  stream: TStream;
  len: integer;
begin
  if opendlg.execute = false then exit;
  if not fileexists(opendlg.FileName) then
    begin
      messagedlg('Datei nicht gefunden. Vorgang abgebrochen.', mterror, [mbok], 0);
      exit;
    end;

  stream:= TFileStream.Create(opendlg.FileName, fmOpenRead);

  try

    Stream.read(Len, SizeOf(Len));
    SetLength(zusatzStr, Len);
    Stream.read(PChar(zusatzStr)^, Len);
    edit1.text:= zusatzStr;

    vst.LoadFromStream(Stream);

  finally
    Stream.free;
  end;
end;


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