Einzelnen Beitrag anzeigen

madina

Registriert seit: 1. Nov 2005
153 Beiträge
 
#1

In Stream schreiben und lesen ?

  Alt 24. Jun 2008, 08:38
Hallo an alle,

ich habe ein TClientDataSet mit den Feldern:
1.AutoInc (Integer), 2.LandName (String), 3. TIcon (Blob): mit fester Größe
und will den 3.TIcon mit Icons (Typ Blob) füllen.

Schreiben eines Icons in das Feld TIcon wie folgt kein Problem:
Delphi-Quellcode:
begin
  Stream:= nil;
  try
    // CreateStream
    Stream:= TMemoryStream.Create;
    frmMain.CDS_Laden(cdsLand, '\Land.dat');

    for i:=0 to 240 do
      begin
        frmMain.ilFlaggen.GetIcon(i, icBild);
        // SaveImageToStream
        icBild.SaveToStream(Stream);
        Stream.Position:= i; // ist richtig ????

        cdsLand.Insert;
          cdsLand['sLand'] := cbLand.Items[i]; // LandName eintragen
          // LoadBlobFieldFromStream
          TBlobField(cdsLand.FieldByName('blbFahne')).LoadFromStream(Stream); // Icon eintragen
        cdsLand.Post;
      end
  except
    Stream.Free;
    raise;
  end;
  Stream.Free;
end;
Fehler: beim Lesen wie kann ich die einzelenen Icons (Einträge) aus Stream lesen oder ist das Stream wie Felder ansprechbar ?:

Delphi-Quellcode:
begin
  Stream:= nil;
  try
    // CreateStream
    Stream:= TMemoryStream.Create;

    // DatenLesen
    TBlobField(cdsLand.FieldByName('blbFahne')).SaveToStream(Stream);

    Stream.Position:= 10; // ist richtig ???
// Stream.Seek(0, soFromCurrent);

    icBild.LoadFromStream(Stream);
    Image1.Picture.Assign(icBild);
  except
    Stream.Free;
    raise;
  end;
  Stream.Free;
end;
  Mit Zitat antworten Zitat