Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.28;
Скачать: [xml.tar.bz2];




Вниз

Помогите! 


Lena   (2002-03-01 20:32) [0]

Есть проблема поместить в BLOB поле несколько картинок в формате jpg; Пыталась через stringlist.savetostream и
tblobfield(field).loadfromstream,
хотелось чтобы в tsringlist[0] была
первая картинка, а в tsringlist[1] - вторая
но когда я просто делаю stringlist.loadfromstream(tjpegpicture);//1.jpg size = 31 kb
и тут же stringlist.savetostream(tmemorystream)
размер файла 2.jpg := 6 байт :(
Может быть tstringlist мне не поможет?
Что посоветуете?



Набережных С.   (2002-03-02 20:14) [1]

Не очень понятен вопрос, но может быть это поможет?
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs,
Db, ADODB, ExtDlgs, ExtCtrls, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
OPD: TOpenPictureDialog;
ADOTable1: TADOTable;
ADOTable1BlobField: TBlobField;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
FList:TStringList;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

uses Jpeg;

procedure WriteBlob(Source: TStrings; Field: TBlobField);
var
B,T:TStream;
n,m:integer;
Img:TJPEGImage;
begin
B:=Field.DataSet.CreateBlobStream(Field,bmWrite);
try
B.Size:=0;
n:=Source.Count;
B.Write(n,SizeOf(n));
T:=TMemoryStream.Create;
try
n:=0;
while n < Source.Count do
begin
TObject(Img):=Source.Objects[n];
Img.SaveToStream(T);
T.Position:=0;
m:=T.Size;
B.Write(m,SizeOf(m));
B.CopyFrom(T,m);
T.Size:=0;
Inc(n);
end;
finally
T.Free;
end;
finally
B.Free;
end;
end;

procedure ReadBlob(Target: TStrings; Field: TBlobField);
var
B,T:TStream;
n,m:integer;
Img:TJPEGImage;
begin
B:=Field.DataSet.CreateBlobStream(Field,bmRead);
try
if B.Size < SizeOf(n) then Exit;
B.Position:=0;
B.Read(n,SizeOf(n));
if n > 0 then Target.Capacity:=n;
T:=TMemoryStream.Create;
try
while n > 0 do
begin
B.Read(m,SizeOf(m));
T.CopyFrom(B,m);
Img:=TJPEGImage.Create;
Target.AddObject("",Img);
T.Position:=0;
Img.LoadFromStream(T);
T.Size:=0;
Dec(n);
end;
finally
T.Free;
end;
finally
B.Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Img:TJPEGImage;
begin
if FList <> nil then
while FList.Count > 0 do
begin
FList.Objects[FList.Count-1].Free;
FList.Delete(FList.Count-1);
end
else
FList:=TStringList.Create;
Img:=TJPEGImage.Create;
OPD.Execute;
Img.LoadFromFile(OPD.FileName);
FList.AddObject("",Img);
Img:=TJPEGImage.Create;
OPD.Execute;
Img.LoadFromFile(OPD.FileName);
FList.AddObject("",Img);
Img:=TJPEGImage.Create;
OPD.Execute;
Img.LoadFromFile(OPD.FileName);
FList.AddObject("",Img);
ADOTable1.Open;
ADOTable1.Edit;
WriteBlob(FList,ADOTable1BlobField);
ADOTable1.Post;
ADOTable1.Close;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if FList <> nil then
while FList.Count > 0 do
begin
FList.Objects[FList.Count-1].Free;
FList.Delete(FList.Count-1);
end
else
FList:=TStringList.Create;
ADOTable1.Open;
ReadBlob(FList,ADOTable1BlobField);
ADOTable1.Close;
end;

procedure TForm1.Button3Click(Sender: TObject);
const
n:integer = 0;
var
img:TJPEGImage;
begin
if FList.Count = 0 then exit
else if n >= FList.Count then n:=0;
Image1.Picture.Graphic:=nil;
TObject(img):=FList.Objects[n];
Image1.Picture.Assign(img);
Inc(n);
end;

end.




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.28;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.019 c
1-91004           fag2000@ok.ru         2002-03-15 17:43  2002.03.28  
Как глобально выделить память?


7-91083           volph                 2001-12-26 15:37  2002.03.28  
передать параметры уже запущенной программе


14-91081          vopros                2002-02-12 17:22  2002.03.28  
Так что же все таки подарить Ж на 14 февраля?


1-90841           Alex_LG               2002-03-16 17:36  2002.03.28  
Где взять исходники модулей Forms, WinSock, Windows.... и др.?


3-90727           JEff                  2002-02-25 18:34  2002.03.28  
КАК ЖЕ МНЕ ИЗМЕНИТЬ CAPTION QRLabel а?