Ich habe das Tutorial (sehr gut, danke!) erfolgreich in ein kleines Testprogramm umgesetzt. Nun möchte ich eine Datei als Binärdaten speichern und bekomme es nicht hin.
Ich habe mit HeidiSQl ein Blobfeld in der Tabelle angelegt und schaffe es auch, bmp-Dateien reinzuschreiben, aber diese kommen nicht immer vollständig an. Ich tippe mal, dass es ein Problem mit nullterminierten Strings ist. Folgendermaßen bin ich vorgegangen und wäre für Tipps dankbar.
Carsten
Code:
var
s: AnsiString;
query: AnsiString;
f: TFileStream;
Fehler:longint;
begin
f := TFileStream.Create(FLink, fmOpenRead + fmShareDenyWrite);
try
SetLength(s, f.Size);
f.ReadBuffer(Pointer(s)^, Length(s));
finally
f.Free;
end;
query:='INSERT INTO dateien(typ,buffer) VALUES(''bmp'',' + QuotedStr(s) + ')';
if FDescriptor<>nil then
begin
Fehler:=mysql_select_db(FDescriptor, PChar(FDBName));
if Fehler = 0 then
begin
Fehler:=mysql_real_query(FDescriptor, PAnsiChar(
query), length(
query));
end;
if Fehler <> 0 then
begin
MessageDlg(mysql_error(FDescriptor), mtWarning, [mbOK], 0);
end;
end
else beep;
end;