AGB  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung [FMX Android] Bild Speichern -> Disk I/O Error

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

Ein Thema von Devil1925 · begonnen am 19. Dez 2017 · letzter Beitrag vom 15. Jan 2018
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Devil1925
Devil1925

Registriert seit: 20. Nov 2015
Ort: Saerbeck
232 Beiträge
 
Delphi 10 Seattle Architect
 
#1

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

  Alt 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)
  Mit Zitat antworten Zitat
Benutzerbild von Devil1925
Devil1925

Registriert seit: 20. Nov 2015
Ort: Saerbeck
232 Beiträge
 
Delphi 10 Seattle Architect
 
#2

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

  Alt 19. Dez 2017, 15:15
Ich habe jetzt mal mit nen paar anderen Geräte getestet. Auf einem iPhone5 Funktioniert das speichern, auf einem AlcatelShineLite mit Android 6.0 ebenfalls. nur auf dem Samsung Tablet mit android 4.1 tut es nicht. liegt es eventuell an einem Veralteten Android, das das damit nicht mehr funktioniert?

Alternativ: Wie / Wo kann ich mehr auslesen? ich hab gesehen, dass dieser i/o error verschiedene Varianten hat, welche verschiedene Ursachen haben. kann ich das irgendwie auslesen, welcher spezifische Fehler das ist?
Philipp
Höllische Grüße
Devil
Meistens sitzt das Problem vor dem Bildschirm! - Leider bin das oftmals ich.
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
428 Beiträge
 
Delphi XE2 Enterprise
 
#3

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

  Alt 19. Dez 2017, 16:37
Hi,

Ich schreibe die Bilder immer über ein UpdateBlob
allerdings hab ich das bisher nur auf Windows Sysemen genutzt, Android k.A.
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
33.618 Beiträge
 
Delphi XE3 Professional
 
#4

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

  Alt 19. Dez 2017, 16:46
Wo liegt die Datei der Datenbanktabelle?

Eventuell hast du keine Schreibrechte auf dem Verzeichnis.
Oder der Speicher ist kaputt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von Devil1925
Devil1925

Registriert seit: 20. Nov 2015
Ort: Saerbeck
232 Beiträge
 
Delphi 10 Seattle Architect
 
#5

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

  Alt 20. Dez 2017, 08:23
Die Datei liegt im Appverzeichnis. Alle anderen Daten kann ich darin auch Ohne probleme Speichern.
Philipp
Höllische Grüße
Devil
Meistens sitzt das Problem vor dem Bildschirm! - Leider bin das oftmals ich.
  Mit Zitat antworten Zitat
Benutzerbild von Devil1925
Devil1925

Registriert seit: 20. Nov 2015
Ort: Saerbeck
232 Beiträge
 
Delphi 10 Seattle Architect
 
#6

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

  Alt 21. Dez 2017, 15:14
Ich habe irgendwie gerade erst gesehen, dass du auch was geschrieben hast... (schande über mich).
Hi,

Ich schreibe die Bilder immer über ein UpdateBlob
allerdings hab ich das bisher nur auf Windows Sysemen genutzt, Android k.A.
Wie läuft das mit dem UpdateBlob? ich habe da jetzt gerade so spontan nichts zu gefunden, und das sagt mir auch so irgendwie nichts...
Philipp
Höllische Grüße
Devil
Meistens sitzt das Problem vor dem Bildschirm! - Leider bin das oftmals ich.
  Mit Zitat antworten Zitat
Benutzerbild von Devil1925
Devil1925

Registriert seit: 20. Nov 2015
Ort: Saerbeck
232 Beiträge
 
Delphi 10 Seattle Architect
 
#7

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

  Alt 21. Dez 2017, 16:33
Ich habe jetzt gerade noch mal weiter getestet, und es scheint an der Größe der gleichzeitig bewegten Daten zu liegen. Auf meinen Anderen Geräten (ein Altes iPad (iOS 9.3) und ein iPhone5 (iOS 10.3) erzeugen den selben Fehler, wenn ich mehrere Bilder gleichzeitig aus einer Tabelle in eine Andere einfüge.
Insert into Kontakt_Bilder select * from TMP_Kontakt_Bilder
Auf dem iPad entsteht der Fehler beim einfügen von zwei Bildern gleichzeitig und auf dem iPhone5 bei 10 Bildern.
Philipp
Höllische Grüße
Devil
Meistens sitzt das Problem vor dem Bildschirm! - Leider bin das oftmals ich.
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
685 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#8

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

  Alt 22. Dez 2017, 12:56
Wie groß sind denn die Bilder, die du hier in die Datenbank schreibst? SQLite hat bei größeren Blob-Daten eine unterirdische Performance. Es ist nicht empfohlen, Dateien in der Datenbank zu speichern.
  Mit Zitat antworten Zitat
Benutzerbild von Devil1925
Devil1925

Registriert seit: 20. Nov 2015
Ort: Saerbeck
232 Beiträge
 
Delphi 10 Seattle Architect
 
#9

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

  Alt 22. Dez 2017, 13:13
das sind bilder, die ich direkt mit der Kamera des Gerätes aufnehme... Ich Speichere die Bilder auch nur in der Datenbank, da die Öfer mal hin und her Übertragen werden sollen, zwischen MSSQL-Server und SQLITE Datenbank. Und da ist das besser, die in der DB zu haben. ich kann aber gleich mal gucken wie groß die bilder so sind...

[Edit]
Bei dem Tablet, bei dem Der Fehler direkt bei dem Ersten bild auftritt, sind die Bilder etwa 500 KB bis 1 MB groß.
[/Edit]
Philipp
Höllische Grüße
Devil
Meistens sitzt das Problem vor dem Bildschirm! - Leider bin das oftmals ich.

Geändert von Devil1925 (22. Dez 2017 um 13:20 Uhr)
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
685 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#10

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

  Alt 22. Dez 2017, 13:27
Läuft das ganze in einem Thread? Also schreibt der vielleicht noch in die Datenbank, während du schon versuchst, die wieder auszulesen?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2017 by Daniel R. Wolf