AGB  ·  Datenschutz  ·  Impressum  







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

Memo Inhalt in einem Stream abspeichern

Ein Thema von Nastarowje · begonnen am 4. Feb 2008 · letzter Beitrag vom 4. Feb 2008
Antwort Antwort
Seite 2 von 2     12   
Nastarowje

Registriert seit: 4. Feb 2008
Ort: Erfurt
12 Beiträge
 
#11

Re: Memo Inhalt in einem Stream abspeichern

  Alt 4. Feb 2008, 16:05
Also bei POS 0 fängt der nicht an, da ich vornedran einen String eingelesen habe. Diese Konstellation funktioniert, er hält so auch die Reiehnfolge ein. Sobal ich aber 2 Memos hintereinander habe, dann läd er das 2te Memo mit.

Sobald ich nach einem Memo noch einen String habe, wird dieser nicht mitgelesen.



Hmmmm,

kann doch nicht so schwer sein
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: Memo Inhalt in einem Stream abspeichern

  Alt 4. Feb 2008, 16:21
LoadFromStream liest alles bis zum Ende. Gehe doch einfach den selben Weg wie mit den Edits und speichere die Länge.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#13

Re: Memo Inhalt in einem Stream abspeichern

  Alt 4. Feb 2008, 16:24
Hallo Michael,

LoadFromStream() liest von der aktuellen Position bis zum Ende des Streams. Du siehst nicht alles in deinem Memo, weil die internen Funktionen zur String-Verarbeitung beim Auftreten des ersten Zero Byte das Ende des Textes annehmen.

Möchtest du den Umgang mit Streams üben oder geht es wirklich ums Speichern von Adressdaten?

Im ersten Fall speichere wie schon beim Edit-Feld die Länge der Notizen im Stream. Im letzten Fall informiere dich über ein Standardformat, welches auch andere Adressbuchprogramme verstehen - VCARD:

Code:
BEGIN:VCARD
VERSION:2.1
N:Surname;GivenName
FN;QUOTED-PRINTABLE:GivenName Surname
TEL;HOME;VOICE:(06431) 012345
TEL;CELL;VOICE:(0171) 01234567
EMAIL;PREF;INTERNET:mailbox@provider.de
BDAY:1918-12-06
NOTE;QUOTED-PRINTABLE:This=0D=0Ais =0D=0Aa=0D=0Amulti-line=0D=0Anote
END:VCARD
Freundliche Grüße
  Mit Zitat antworten Zitat
Nastarowje

Registriert seit: 4. Feb 2008
Ort: Erfurt
12 Beiträge
 
#14

Re: Memo Inhalt in einem Stream abspeichern

  Alt 4. Feb 2008, 16:41
Eigentlich möchte ich die Streams austesten und alles mögliche üben. Habe sonst immer alles mit Mysql gemacht. Jetzt sind eigene Format dran

Ich will auf alle Fälle ein eigenes Format erstellen.

Wie kann ich die Länge eines Memos bestimmen?
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#15

Re: Memo Inhalt in einem Stream abspeichern

  Alt 4. Feb 2008, 16:49
Hallo,

ich würde über Treader/Twrioter gehen, wenn du daten in den stream laden/speichern willst. Dort sind schon routinen für strings, integers etc dabei, über irgendwelchen Längenangaben brauchst du dir keinen Kopf zerbrechen.

als Bsp:
Delphi-Quellcode:
procedure TForm1.ButtonSpeichernClick(Sender: TObject);
Var Stream:TFilestream;
begin
  Stream:=TFileStream.Create('D:\TestStream',fmcreate);
  try
    //TWriter objekt erstellen und Daten in den Stream speichern
    with TWriter.create(Stream,1024) do
      try
        WriteString(Memo1.Text);
        WriteString(Edit1.Text);
        WriteInteger(SpinEdit1.Value);
        WriteBoolean(CheckBox1.Checked);
      finally
        free;
      end;
   finally
     Stream.free;
   end;
end;

 
procedure TForm1.ButtonLadenClick(Sender: TObject);
Var Stream:TFilestream;
begin
  Stream:=TFileStream.Create('D:\TestStream',fmOpenRead or fmShareDenyNone);
  try
    //TReader objekt erstellen und Daten aus den Stream laden
    with TReader.create(Stream,1024) do
      try
        Memo1.Text := ReadString;
        Edit1.Text := ReadString;
        SpinEdit1.Value := ReadInteger;
        CheckBox1.Checked := ReadBoolean;
      finally
        free;
      end;
   finally
     Stream.free;
   end;
end;
Gruß Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Nastarowje

Registriert seit: 4. Feb 2008
Ort: Erfurt
12 Beiträge
 
#16

Re: Memo Inhalt in einem Stream abspeichern

  Alt 4. Feb 2008, 18:26
Das hört sich vielversprechend an,

Wofür brauche ich die 1024 im create des Streams? Ist die Größe des Puffers variabel?




Vielen Dank
Michael
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#17

Re: Memo Inhalt in einem Stream abspeichern

  Alt 4. Feb 2008, 18:33
Zitat von Nastarowje:
Wofür brauche ich die 1024 im create des Streams? Ist die Größe des Puffers variabel?
ich weiß es nich .

Irgendwo in der DP gabs mal einen Thread zu optimalen Puffergröße, ich hab ihn aber nich wieder gefunden.

Du kannst dir so auch ein komplexen Dateiformat aufbauen, jedes Klasse hat eine saveto/loadfromstream-methode. Das sind bei mir in einem konkretem Fall recht viele. Ich hatte dort mal bissel mit der Puffergröße experimentiert, zeitliche Unterschiede waren zwar messbar, aber vernachlässigbar.

Gruß Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Nastarowje

Registriert seit: 4. Feb 2008
Ort: Erfurt
12 Beiträge
 
#18

Re: Memo Inhalt in einem Stream abspeichern

  Alt 4. Feb 2008, 18:36
Boh das ist ja richtig geil, das funktioniert tadellos.

Wo bekommt man solche Infos her?



Suppi

Ich danke dir

Michael
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 08:11 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