Einzelnen Beitrag anzeigen

oakley

Registriert seit: 15. Aug 2005
287 Beiträge
 
#13

AW: FMX : getContentResolver.query Crash und Jnet_Uri getPath

  Alt 31. Jan 2021, 00:09
So weit so gut.

Ich habe jetzt folgenden Code für den Upload

Delphi-Quellcode:
function TMFORM.HandleIntentAction(const Data: JIntent): Boolean;
var
  C: JCursor;
  count: Integer;
  InputStream : JInputStream;
  ms : TMemoryStream;
  b: TJavaArray<Byte>;
  wfilter: TJavaObjectArray<JString>;
  filename : String;
begin
  count := Data.getClipData().getItemCount();
  ProgressBar1.Min := 0;
  ProgressBar1.Max := count;
  TTask.Run(
  Procedure
  var i,m : Integer;
  begin
    for i := 0 to count-1 do
    begin
      C := MainActivity.getContentResolver.query(Data.getClipData().getItemAt(i).getUri,nil,StringToJString(''),nil,StringToJString(''));
      C.moveToFirst;
      for m := 0 to C.getColumnCount - 1 do
      begin
         if JStringToString(C.getColumnName(m)) = '_display_namethen
         begin
           filename := JStringToString(C.getString(m));
           break;
         end;
      end;
      InputStream := MainActivity.getContentResolver.openInputStream(Data.getClipData().getItemAt(i).getUri);
      ms.Free;
      b.Free;
      b := TJavaArray<Byte>.Create(InputStream.available);
      ms := TMemoryStream.Create;
      InputStream.read(b);
      ms.Write(b.Data^, b.Length);
      InputStream.close;
      ms.Position := 0;
      if not idftp1.Connected then idftp1.Connect;
      idftp1.Put(ms,filename);
    end;
    idFTP1.Disconnect;
  end);
end;
Der Upload zeigt ab und zu die Meldung "keine Duplikate zulässig" und der Fortschrittsbalken steht direkt nach beginn des Uploads bei 100%.
Hier hätte ich gerne etwas das die geladenen kBytes pro Datei anzeigt. Geht sowas? Und der Fortschrittsbalken ist sehr dünn, kann man den etwas breiter machen?
In Firemonkey kann ich zwar die Höhe mit der Maus ziehen, wird aber direkt wieder zurück gestellt.

Delphi-Quellcode:
procedure TMFORM.IdFTP1Work(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Int64);
begin
  TTask.Run(
  Procedure
  begin
    //Aktualisieren der Fortschrittsanzeige:
    ProgressBar1.Value:= AWorkCount;
  end);
end;
Ich wollte die Bilder vor dem Upload auch noch verkleinern denn ich brauche die Vollauflösung der Kamera nicht und der Upload geht wesentlich schneller.
Gibt überhaupt eine praktikable Lösung auf dem Handy oder kommt man da schnell an die Leistungsgrenze?

LG

Mirko

Geändert von oakley (31. Jan 2021 um 00:49 Uhr)
  Mit Zitat antworten Zitat