Einzelnen Beitrag anzeigen

Benutzerbild von Devil1925
Devil1925

Registriert seit: 20. Nov 2015
Ort: Saerbeck
236 Beiträge
 
Delphi 10.3 Rio
 
#1

[FMX Android] Bild Speichern -> Disk I/O Error

  Alt 19. Dez 2017, 09: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 10:12 Uhr)
  Mit Zitat antworten Zitat