Registriert seit: 8. Nov 2006
1.360 Beiträge
Delphi 10.3 Rio
|
Probleme beim Stream Laden
14. Feb 2007, 18:32
Hi
Irgendwas stimmt beim laden meines Streams nicht, beim Speichern wird alles sauber gespeichert beim laden werden alle Daten des StringGrids auch sauber geladen nur die Memos und Labels erhalten nur nicht mach ich was falsch in der Reihenfolge??.
Hab mal bilder angehängt mit der eingabe und was beim laden raus kommt.
Stream Speichern
Delphi-Quellcode:
{Stream Speichern}
procedure TForm7.memospeichern;
var FileStream: TMemoryStream;
memos :TFileName;
x, y, row, col,len :Word;
a,c,e,g,i,k,m,o,q,s :String;
b,d,f,h,j,l,n,p,r,t :integer;
begin
a:= Memo1.Text; b:=Length(a);
c:= Memo2.Text; d:=Length(c);
e:= Memo3.Text; f:=Length(e);
g:= Memo4.Text; h:=Length(g);
i:= Memo5.Text; j:=Length(i);
k:= Memo6.Text; l:=Length(k);
m:= Label8.Caption; n:=Length(m);
o:= Label10.Caption; p:=Length(o);
q:= Label3.Caption; r:=Length(q);
s:= Label1.Caption; t:=Length(s);
FileStream:= TMemoryStream.Create;
col:= StringGrid1.ColCount -1;
row:= StringGrid1.RowCount -1;
FileStream.Write(row, SizeOf(Word));
FileStream.Write(col, SizeOf(Word));
for x:= 0 to row do
for y:= 0 to col do
begin
buff:= StringGrid1.Cells[y,x];
len:= length(buff);
FileStream.Write(len, SizeOf(Word));
FileStream.Write(buff[1], len);
end;
FileStream.Write(b, SizeOf(Integer)); // Memo1
FileStream.Write(a[1], b);
FileStream.Write(d, SizeOf(Integer)); // Memo2
FileStream.Write(c[1], d);
FileStream.Write(f, SizeOf(Integer)); // Memo3
FileStream.Write(e[1], f);
FileStream.Write(h, SizeOf(Integer)); // Memo4
FileStream.Write(g[1], h);
FileStream.Write(j, SizeOf(Integer)); // Memo5
FileStream.Write(i[1], j);
FileStream.Write(l, SizeOf(Integer)); // Memo6
FileStream.Write(k[1], l);
FileStream.Write(n, SizeOf(Integer)); // Label8
FileStream.Write(m[1], n);
FileStream.Write(p, SizeOf(Integer)); // Label10
FileStream.Write(o[1], p);
FileStream.Write(r, SizeOf(Integer)); // Label3
FileStream.Write(q[1], r);
FileStream.Write(t, SizeOf(Integer)); // Label1
FileStream.Write(s[1], t);
memos:= ExtractFilePath(ParamStr(0))+'Bemerkungen\'+ ComboBox4.Text+'.txt';
FileStream.SaveToFile(memos);
FileStream.Free;
end;
Stream Laden
Delphi-Quellcode:
{Stream Laden}
procedure TForm7.memoladen;
var x, y, row, col,len :Word;
memos :TFileName;
FileStream :TMemoryStream;
i,l :Integer;
s :String;
begin
FileStream := TMemoryStream.Create;
memos:=ExtractFilePath(ParamStr(0))+'Bemerkungen\'+ ComboBox3.Text+'.txt';
FileStream.LoadFromFile(memos);
FileStream.Read(row, SizeOf(Word));
FileStream.Read(col, SizeOf(Word));
for x:= 0 to row do
for y:= 0 to col do
begin
FileStream.Read(len, SizeOf(Word));
SetLength(buff, len);
FileStream.Read(buff[1], len);
StringGrid1.Cells[y,x]:= buff;
end;
l := 0;
FileStream.Position:=0;
for i := 1 to 10 do
begin
FileStream.Read(l, SizeOf(Integer));
setlength(s, l); // legt die Länge einer String- Variable fest
FileStream.Read(s[1], l);
case i of
1: Memo1.Text:= s;
2: Memo2.Text:= s;
3: Memo3.Text:= s;
4: Memo4.Text:= s;
5: Memo5.Text:= s;
6: Memo6.Text:= s;
7: Label8.Caption:= s;
8: Label10.Caption:= s;
9: Label3.Caption:= s;
10: Label1.Caption:= s;
end;
end;
FileStream.Free;
end;
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...
Surft Ihr mit dem Taschenrechner?"
|