Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   TFile.copy Fehler bei Android (https://www.delphipraxis.net/211567-tfile-copy-fehler-bei-android.html)

skoschke 5. Okt 2022 09:49

TFile.copy Fehler bei Android
 
Hallo,

ich habe ein ganz komisches Phänomen:
Code:
  dsc := TPath.DirectorySeparatorChar;
  zipdir := sTempPath + 'zipfiles';
  fn1 := extractfilename(Attachment);
  fn2 := zipdir + dsc + fn1;  <---- hier knallt's
  TFile.copy(Attachment, fn2, true);
Im Debugger sehe ich
zipdir = '/storage/emulated/0/Documents/test/temp/zipfiles'
dsc = '/'
fn1 = 'meine.db'

und bekomme in der Zeile
fn2 := zipdir + dsc + fn1; folgende Meldung:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Test.apk ist eine Exception der Klasse EArgumentException mit der Meldung 'Ungültige Zeichen im Pfad' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------

Was kann da los sein?

Ciao
Stefan

AuronTLG 5. Okt 2022 13:58

AW: TFile.copy Fehler bei Android
 
Auf Android und IOS Pfade und Dateien unbedingt mit TPath.Combine zusammenbauen.
Einfache String-Konkatenation führt zu ungültigen Pfaden, welche eben solche Fehler auslösen.

skoschke 6. Okt 2022 05:50

AW: TFile.copy Fehler bei Android
 
Danke für den Tip!

Allerdings scheint da ein anderes Problem vorzuliegen, ich habe den Eindruck, dass beim Debuggen auf Android ein Schritt mit F8 eben nicht wie erwartet die eine Befehlszeile
Code:
fn2 := zipdir + dsc + fn1;
abarbeitet, sondern im Hintergrund bereits "weitergearbeitet" wird, ich habe den eigentlichen Fehler lokalisiert, der kommt in Wirklichkeit erst viel später!

Ciao
Stefan

Sherlock 6. Okt 2022 13:14

AW: TFile.copy Fehler bei Android
 
Dennoch hat AuronTLG Recht, Pfade werden so nicht zusammengebaut, sondern man lässt sie sich von TPath.Combine zusammensetzen. Das ist zum einen OS unabhängig und zum anderen weniger Fehleranfällig. Auch für Windows mache ich das so.

Sherlock


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz