AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi MAC-Dateinamen unter Windows behandeln
Thema durchsuchen
Ansicht
Themen-Optionen

MAC-Dateinamen unter Windows behandeln

Offene Frage von "necromundo"
Ein Thema von necromundo · begonnen am 20. Okt 2008 · letzter Beitrag vom 22. Okt 2008
Antwort Antwort
Seite 1 von 2  1 2      
necromundo

Registriert seit: 31. Jan 2005
26 Beiträge
 
#1

MAC-Dateinamen unter Windows behandeln

  Alt 20. Okt 2008, 07:58
Hallo zusammen!

Ich hoffe, der Beitrag bleibt hier im Forum, da er sonst nirgends besser gepasst hat!

Ich habe folgendes Problem:
In einem Netzwerk werden von Mac-Rechnern Dateien auf einen Windows-Server geschoben.
Diese sollen nun gesichert werden mit einer eigenen Software mit Delphi5 geschrieben! Jetzt enthalten manche Dateinamen aber komische Mac-Symbole oder chinesische Schriftzeichen. Wenn ich ein Verzeichnis einlese mit "FindFirst" und "FindNext", liefert mir Windows diese Dateinamen als String mit Fragezeichen an den entsprechenden Stellen der Sonderzeichen zurück. Versuche ich nun, auf diese Dateien lesend zuzugreifen, sagt Windows, dass die Datei nicht existiert. Stimmt ja auch, weil der Dateiname da ja kein Fragezeichen, sondern ein anderes hat.
Unter Windows selbst wird im Explorer so ein Zeichen beispielsweise mit einem Punkt unter dem vorherigen Buchstaben angezeigt, in den Dateieigenschaften wiederum als Rechteck (Unbekanntes Zeichen).

Hat jemand eine Idee, wie man solche Dateinamen handlen kann? Vielleicht mit einem erweiterten Zeichensatz, also was anderes ausser String?

vg, benny
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.173 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: MAC-Dateinamen unter Windows behandeln

  Alt 20. Okt 2008, 08:07
Vergiss Codepages/Charsets. Du kannst mit den TNTWare-Kompos auch fremdsprachig Codierte Dateinamen bearbeiten da diese Wrapper für die Wide-API Funktionen bereitstellen.

Oder du stellst auf Delphi 2009 um. Dieses ist dann Full-Unicode-Enabled und du kannst dein Programm einfach damit kompilieren (nach u.U. kleinen Anpassungen) und deine Probleme sind auch weg.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
necromundo

Registriert seit: 31. Jan 2005
26 Beiträge
 
#3

Re: MAC-Dateinamen unter Windows behandeln

  Alt 20. Okt 2008, 08:10
aus kostengründen kann ich nicht auf 2009 umsteigen, daher scheidet diese variante aus!
sind diese tntware-kompos freeware oder opensource?

und diese stellen direkt funtionen zur verfügung, mit denen ich auf solche dateinamen zugreifen kann? oder nur, um den dateinamen auszulesen?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.173 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: MAC-Dateinamen unter Windows behandeln

  Alt 20. Okt 2008, 08:26
Zitat von necromundo:
sind diese tntware-kompos freeware oder opensource?
Ältere Versionen ware kostenlos. Diese wurden aber vom Entwickler u.a. auch wegen fehlender Unterstützung der Community an TMS Software verkauft und werden dort weiterentwickelt.
Zitat von necromundo:
und diese stellen direkt funtionen zur verfügung, mit denen ich auf solche dateinamen zugreifen kann? oder nur, um den dateinamen auszulesen?
Sehr viele Nicht-Unicodefähigen API-Wrapper haben in TNTWare eine Unicodefähige Entsprechnung bekommen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
necromundo

Registriert seit: 31. Jan 2005
26 Beiträge
 
#5

Re: MAC-Dateinamen unter Windows behandeln

  Alt 21. Okt 2008, 06:43
ok, ich habe jetzt seit gestern gesucht, aber keine version davon mehr gefunden, die mit delphi5 funktioniert!
entweder sind die links dazu tot, oder die version, die ich bekomme, ist ab delphi6! das package dafür lässt sich nicht installieren!
hat jemand vielleicht eine version davon für delphi5?

ich weiss aber auch gar nicht, ob ich mit unicode da weiterkomme, weil das zeichen, das dort nicht interpretiert wird, wohl ein mac-spezifisches ist! ich habe mal ein bild angehängt!
links: wie es im windows-explorer aussieht
mitte: so siehts in den dateieigenschaften aus
rechts: so siehts unter delphi aus, wenn es es mit der filelistbox anzeige

unter windows lässt sich so eine datei einfach kopieren, das komische zeichen bleibt! also könnte ich doch sicher auch die windows-api-funktion zum kopieren benutzen! das ist aber nicht copyfile, gibts das entsprechend auch für widestrings?
ausserdem müsste ich dann erstmal den widestring-dateinamen bekommen! ginge das wohl mit "FindFirstFileW" und "FindNextFileW"? das attribut "cFilename" von "WIN32_FIND_DATAW" ist in dem fall ja widestring!

vg, benny
Miniaturansicht angehängter Grafiken
problemzeichen_882.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.173 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: MAC-Dateinamen unter Windows behandeln

  Alt 21. Okt 2008, 21:01
Zitat von necromundo:
ich weiss aber auch gar nicht, ob ich mit unicode da weiterkomme, weil das zeichen, das dort nicht interpretiert wird, wohl ein mac-spezifisches ist! ich habe mal ein bild angehängt!
Wie soll den die Extension unter MacOS heißen. Schaut eher aus das beim Datei-kopieren von MAC nach PC irgend ein Programmfehler auf MAC oder Windows vorhanden ist. Falls der Server ein Windows Home Server ist würde ich mal auf diesen Tippen. Dieser ist so fehlerhaft implementiert das man diesem nur Dateien anvertrauen sollte die man eh löschen will.

Kopier mal den Dateinamen hier im Forum. Evtl. auch in eine Textdatei die Du mit dem Dateinamen unter MacOS speicherst und eine unter Windows.

Zitat von necromundo:
unter windows lässt sich so eine datei einfach kopieren, das komische zeichen bleibt! also könnte ich doch sicher auch die windows-api-funktion zum kopieren benutzen! das ist aber nicht copyfile, gibts das entsprechend auch für widestrings?
Viele API-Funktionen für Widechars haben einfach ein W am ende. Also statt CopyFile -> CopyFileW
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

Re: MAC-Dateinamen unter Windows behandeln

  Alt 21. Okt 2008, 23:51
Zitat von Bernhard Geyer:
Wie soll den die Extension unter MacOS heißen. Schaut eher aus das beim Datei-kopieren von MAC nach PC irgend ein Programmfehler auf MAC oder Windows vorhanden ist.
Nö, nö, das ist so schon alles richtig und kann mit den Unicode-Varianten einwandfrei gelesen werden.
Da ich genau dieses Problem auch hatte in der gleichen Konstellation.

Es hat bei mir auch eine Ewigkeit gedauert, da der Dateiname am Mac aussah wie z.B. "MeineDatei.mac"
Unter Windows ausgelesen kam dann aber "MeineDatei.ma?"
Nach langem Suchen und Fluchen schaute ich mir den Dateinamen am Mac nochmal sehr genau an.
Dabei fiel mir dann ein kleiner Schutzfleck auf dem Bildschirm auf, den ich als Pedant natürlich sofort entfernen wollte.
Aber da kannst schrubben wie ein Blöder ... der ging nicht weg ... bis ich irgendwie an Maus oder Tastatur kam, der Finder scrollte und der Fleck mitwanderte ...
Der Fleck klebte direkt unter dem "c" von "MeineDatei.mac" und das war des Rätsels Lösung

Mit den Unicode-Varianten waren diese und andere Dateien dann kein Problem mehr.

Bei dem Preisproblem müsste doch eigentlich die Turbo-Version helfen, kostet nix und müsste auch schon Unicode-Varianten haben (Achtung, die muss man aber explizit auswählen, wie hier schon erwähnt)

cu

Oliver

P.S.: Und beim Mac die Frage "was für eine Erweiterung soll denn das sein" zu stellen ist eh überflüssig ... da ist die Erweiterung nur als Name zu gebrauchen und ist nicht die Grundlage für die Programmverknüpfung wie unter Windows.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
necromundo

Registriert seit: 31. Jan 2005
26 Beiträge
 
#8

Re: MAC-Dateinamen unter Windows behandeln

  Alt 22. Okt 2008, 07:23
okay, das hilft mir doch schonmal weiter, dass ich nicht der einizge mit dem problem bin und das auch noch lösbar ist!

der server dort ist ein windows server 2003, dass es daran liegt schliesse ich auch aus! die dateinamen kann ich hier nicht posten, da es sich um dateien meiner auftragsgeberfirma handelt.

also muss ich beim kopieren der dateien an allen stellen widestrings handlen, also beim suchen mit findnextfilew und dann kopieren mit copyfilew!
gibt es auch methoden, um die attribute und größe, datum, etc von solchen dateien auszulesen? mit den dateien haben die standardmethoden auch ihre probleme!

vg, benny
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.173 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: MAC-Dateinamen unter Windows behandeln

  Alt 22. Okt 2008, 07:30
Zitat von necromundo:
die dateinamen kann ich hier nicht posten, da es sich um dateien meiner auftragsgeberfirma handelt.
es reicht wenn du jeweils die Extension postest.

Zitat von necromundo:
gibt es auch methoden, um die attribute und größe, datum, etc von solchen dateien auszulesen? mit den dateien haben die standardmethoden auch ihre probleme!
Schau was die VCL im hintergrund für WinAPI-Funktionen verwendet und schreib dir eine Methode welche die Wide-Version verwendet.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
necromundo

Registriert seit: 31. Jan 2005
26 Beiträge
 
#10

Re: MAC-Dateinamen unter Windows behandeln

  Alt 22. Okt 2008, 08:18
okay, das ist hier biespielhaft einmal eine datei mit der endung ".eps" und eine datei, die auf " 45" endet, ohne endung!

okay, ich beschäftige mich nachher mal mit der lösung des problems und lass es euch wissen, wenn ich fortschritte mache!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:49 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