Registriert seit: 20. Nov 2015
Ort: Saerbeck
236 Beiträge
Delphi 10.3 Rio
|
[FMX Android] Bild Speichern -> Disk I/O Error
19. Dez 2017, 10:58
Guten Tag allerseits!
Ich versuche über unten angefügten Code ein Bild, welches ich zuvor aufgenommen habe auf meinem Android Tablet in eine SQLITE Datenbank zu schreiben. Wenn ich das Ganze in eine Temp Tabelle schreibe, funktioniert alles einwandfrei, ändere ich das Ganze allerdings auf eine "echte" Tabelle, oder versuche ich die Daten aus der Temptabelle in die "echte" Tabelle einzufügen, bekomme ich den Fehler "disk I/O Error".
Delphi-Quellcode:
procedure TfrmKontakt.DoDidFinish(Image: TBitmap);
var str:TMemoryStream;
SQLText:String;
begin
BT_Save.Visible := (not Kommentar) or (neu);
IMG.Bitmap.Assign(Image);
try
str := TMemoryStream.Create;
IMG.Bitmap.SaveToStream(str);
if not ExistiertTabelle(Daten.SQLITE_Connection, 'TEMP_Kontakt_Bilder') then
Begin
SQLExec(Daten.SQLITE_Connection, 'Create Table TEMP_Kontakt_Bilder (IDX INTEGER, Kontakt_Sub_IDX INTEGER, Kontakt_IDX INTEGER, Bild BLOB, User_ID INTEGER, Station_ID INTEGER, Changed_By INTEGER, Changed_Last DATETIME, Creation_Date DATETIME, KundLief VARCHAR)');
SQLText := 'Insert into TEMP_Kontakt_Bilder (IDX, Kontakt_Sub_IDX, Kontakt_IDX, Bild, User_ID, Station_ID, Changed_By, Changed_Last, Creation_Date, KundLief) '+
'values ('+ReadINITab('Kontakt', 'MaxBildIDX')+'+1, :Kontakt_Sub_IDX, :Kontakt_IDX, :Bild, :User_ID, :Station_ID, :Changed_By, :Changed_Last, :Creation_Date, ''K'')';
End
else
Begin
SQLText :='Insert into TEMP_Kontakt_Bilder (IDX, Kontakt_Sub_IDX, Kontakt_IDX, Bild, User_ID, Station_ID, Changed_By, Changed_Last, Creation_Date, KundLief) '+
'values ((Select Max(IDX) +1 from TEMP_Kontakt_Bilder), :Kontakt_Sub_IDX, :Kontakt_IDX, :Bild, :User_ID, :Station_ID, :Changed_By, :Changed_Last, :Creation_Date, ''K'')';
End;
Daten.Q_Bild.Close;
Daten.Q_Bild.SQL.Text := SQLText;
Daten.Q_Bild.ParamByName('Kontakt_Sub_IDX').AsInteger := StrToInt(ReadINITab('Kontakt', 'MaxKontaktSubIDX')) +1;
Daten.Q_Bild.ParamByName('Kontakt_IDX').AsInteger := Kontakt_Nr;
Daten.Q_Bild.ParamByName('Bild').LoadFromStream(str, ftBlob);
Daten.Q_Bild.ParamByName('User_ID').AsInteger := CurrentUser;
Daten.Q_Bild.ParamByName('Station_ID').AsInteger := Station_ID;
Daten.Q_Bild.ParamByName('Changed_By').AsInteger := CurrentUser;
Daten.Q_Bild.ParamByName('Changed_Last').AsDateTime := Now;
Daten.Q_Bild.ParamByName('Creation_Date').AsDateTime := Now;
Daten.Q_Bild.Execute;
finally
str.Free;
end;
IMG.Bitmap := nil;
end;
Ich befürchte das mein Problem irgendwo zwischen den Ohren liegt...
PS: Ich habe mit diesem Code schon früher Bilder in meine DB gespeichert. Das einzige, das mir gerade einfällt was geändert wurde, ist das Tool mit dem ich die Datenbank angucke und aufbereite auf meinem Rechenr. (vorher dieses SQLITE Tool in Firefox, jetzt SQLITEStudio 3.1.1)
Philipp Höllische Grüße
Devil
Meistens sitzt das Problem vor dem Bildschirm! - Leider bin das oftmals ich.
Geändert von Devil1925 (19. Dez 2017 um 11:12 Uhr)
|