Zitat von
marabu:
Hättest du mal nur die Erbgeschichte von TIBQuery studiert. Was mit TTable funktioniert, funktioniert auch mit TIBQuery, da beide mit TFields arbeiten. Na ja, du bist zu faul zum Lesen und ich bin zu faul zum Testen - ich denke wir sind quitt.
Also, dass du mich besser kennst als ich mich selbst überrascht mich fast ein wenig...
Aber wahrscheinlich hät ich zu meinen posting einfach noch ein paar Details schreiben sollen.
Nuja, also soweit war ich auch schon. Dein source geht nicht. Jedenfalls nicht ohne weiteres.
Ich hab der SaveJpg noch "dbField.DataSet.Edit;" und "dbField.DataSet.Post;" hinzugefügt.
der
query hab ich auch dem "UpdateObject" ein TIBUpdateSQL zugewiesen (und auch das
SQL generieren lassen). Hier mal das
SQL für "insert":
SQL-Code:
insert into BLOBLTEST
(ID, TEXT, PIC)
values
(:ID, :TEXT, :PIC)
Aufrufen tu ich die SaveJPG wie folgt:
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
pic: TJPEGImage;
begin
pic := TJPEGImage.Create;
pic.LoadFromFile('d:\test.jpg');
try
if SaveJpeg(ibqBlob.FieldByName('PIC'), pic) then begin
ibqBlob.Transaction.Commit;
end;
finally
pic.Free;
end;
end;
Zum lesen benutz ich:
Code:
procedure TForm1.Button2Click(Sender: TObject);
var
pic: TJPEGImage;
begin
pic := TJPEGImage.Create;
if LoadJpeg(ibqBlob.FieldByName('PIC'), pic) then begin
pic.SaveToFile('D:\t.jpg');
end;
end;
Es gibt keinerlei Exceptions aber wenn ich das Bild wieder lade ist d:\t.jpg 0 Byte groß!?
Was mach ich falsch?
Bin für jeden Hinweis dankbar.
PS: Hier das Script für die Test-Tabelle:
SQL-Code:
CREATE TABLE BLOBLTEST (
ID INTEGER NOT NULL,
TEXT VARCHAR(10),
PIC BLOB SUB_TYPE 0 SEGMENT SIZE 2048