Hallo
Ik probeer een Stringlist in een blob-veld te zetten en deze later natuurlijk
ook weer eruit te lezen.
Naast het zip-bestand zet ik hieronder de code waarmee ik bezig ben
om juist dat te behalen. Zoals je zoet heb ik al vele methodes uitgeprbeerd
waarvan ik dus drie toon. Als je bv in Memo1 text met meer dan een regel
ingeeft, wordt ebkel de eerste regel teruggelzen. Of dat betekent, dat alles
kerig in de blob-field wordt gezet weet ik niet. Een alternatief of correctie
zou ik erg apprecieren. Bedankt:
Code:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, Buttons, DB, DBTables
{DB, DBTables added by myself};
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
Memo1: TMemo;
Edit1: TEdit;
BitBtn_Store: TBitBtn;
BitBtn_Retrieve: TBitBtn;
Memo2: TMemo;
procedure BitBtn_StoreClick(Sender: TObject);
procedure BitBtn_RetrieveClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
ComponentStringList: TStringList;
implementation
{$R *.dfm}
uses Unit_Datamodule;
procedure TForm1.BitBtn_StoreClick(Sender: TObject);
var BlobStream: TStream;
MemoryStream: TMemoryStream;
begin
// POGING 1
MemoryStream := TMemoryStream.Create;
try
MemoryStream.Position := 0;
ComponentStringList := TStringList.Create;
try
ComponentStringList.Add(memo1.Lines.Text);
ComponentStringList.Add(Edit1.Text);
ComponentStringList.SaveToStream(MemoryStream);
MemoryStream.Position := 0;
Datamodule2.ABSTable1.edit;
TBlobField(Datamodule2.ABSTable1.FieldByName('StringGriidBlobField')).LoadFromStream(MemoryStream);
Datamodule2.ABSTable1.post;
finally
ComponentStringList.free;
end;
finally
MemoryStream.Free;
end;
{ // POGING 2
Datamodule2.ABSTable1.edit;
BlobStream := Datamodule2.ABSTable1.CreateBlobStream(Datamodule2.ABSTable1.FieldByName('StringGriidBlobField'),bmWrite);
try
BlobStream.Seek(0, soFromBeginning);
BlobStream.position := 0;
ComponentStringList := TStringList.Create;
try
ComponentStringList.Add(memo1.Lines.Text);
ComponentStringList.Add(Edit1.Text);
memo2.Lines.Text := ComponentStringList[0];
ComponentStringList.SaveToStream(BlobStream);
finally
ComponentStringList.free;
end;
finally
BlobStream.free;
end;
Datamodule2.ABSTable1.post;
}
end;
procedure TForm1.BitBtn_RetrieveClick(Sender: TObject);
var BlobStream: TStream;
MemoryStream: TMemoryStream;
begin
{==
// POGING 1
//alternatief dat ook niet werkt
ComponentStringList := TStringList.Create;
try
memo1.Lines.Clear;
Edit1.Text := '';
ComponentStringList.Assign(Datamodule2.ABSTable1.FieldByName('StringGriidBlobField'));
memo1.Lines.Text := ComponentStringList[0];
//Edit1.Text := ComponentStringList[1];
finally
ComponentStringList.free;
end;
==}
// POGING 2
MemoryStream := TMemoryStream.Create;
try
MemoryStream.Position := 0;
ComponentStringList := TStringList.Create;
try
TBlobField(Datamodule2.ABSTable1.FieldByName('StringGriidBlobField')).SaveToStream(MemoryStream);
MemoryStream.Position := 0;
ComponentStringList.LoadFromStream(MemoryStream);
memo1.Lines.Text := ComponentStringList[0];
//Edit1.Text := ComponentStringList[1];
finally
ComponentStringList.free;
end;
finally
MemoryStream.Free;
end;
{ // POGING 3
BlobStream := Datamodule2.ABSTable1.CreateBlobStream(Datamodule2.ABSTable1.FieldByName('StringGriidBlobField'),bmRead);
try
BlobStream.Seek(0, soFromBeginning);
BlobStream.position := 0;
ComponentStringList := TStringList.Create;
try
memo1.Lines.Clear;
Edit1.Text := '';
ComponentStringList.LoadFromStream(BlobStream);
memo1.Lines.Text := ComponentStringList[0];
//Edit1.Text := ComponentStringList[1];
finally
ComponentStringList.free;
end;
finally
BlobStream.free;
end;
}
end;
end.
Bookmarks