AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein TSearchRec bei Dateien/Ordner mit Unicode-Namen
Thema durchsuchen
Ansicht
Themen-Optionen

TSearchRec bei Dateien/Ordner mit Unicode-Namen

Ein Thema von Ares · begonnen am 31. Okt 2008 · letzter Beitrag vom 8. Nov 2008
Antwort Antwort
Ares

Registriert seit: 5. Dez 2002
269 Beiträge
 
#1

TSearchRec bei Dateien/Ordner mit Unicode-Namen

  Alt 31. Okt 2008, 08:48
Hallo!

Ich brauche für ein Programm Funktionen die mir eine Liste aller Unterordner oder aller Dateien in einem Verzeichnis liefern. Das ist mit TSearchRec und FindNext() ja kein Problem. Nun wir das Programm aber auf Rechnern eingesetzt bei den viele Ordner und Dateinamen Unicode Zeichen enthalten und hier stößt TSearchRec anscheinend an seine Grenzen.

Hab ich z.B. einen Ordner "Προγράμματα Διαφήμισης" liefert mir TSearchRec den Namen "'??????µµata ??af?µ?s??'". Versuche ich dann diesen Ordner zu öffnen erhalte ich natürlich die Meldung, dass kein Ordner mit diesem Namen existiert...

Ich verwende Delphi 2007, gibt es hier irgendeine Möglichkeit Datei- und Ordnernamen in Unicode zu ermitteln?

Besten Dank!
Ares
  Mit Zitat antworten Zitat
NineBerry

Registriert seit: 7. Nov 2008
Ort: Karlsruhe
8 Beiträge
 
#2

Re: TSearchRec bei Dateien/Ordner mit Unicode-Namen

  Alt 8. Nov 2008, 00:54
Hallo

Eine praktische Lösung besteht darin, statt MySearchRec.Name auf MySearchRec.FindData.cAlternateFileName zuzugreifen. Dies liefert dir den 8.3 (Dos-kompatiblen) Dateinamen. Dieser enthält garantiert nur ANSI-Zeichen.

Wenn du den Dateinamen nicht nur intern verwenden, sondern auch anzeigen möchtest, musst du größere Geschütze auffahren. Das Problem ist, dass ein Delphi string (vor Delphi 2009) nun mal eben nur Ansi-Zeichen und keine Unicode-Zeichen speichern kann.

Du musst also von Hand die WinAPI-Funktion FindNextFileW() aufrufen und von dort aus den Dateinamen durchgängig in Variablen vom Typ WideString verarbeiten (statt string).

(Oder auf Delphi 2009 umsteigen )

Neun
  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#3

Re: TSearchRec bei Dateien/Ordner mit Unicode-Namen

  Alt 8. Nov 2008, 02:28
Delphi 2009 kann Unicode "out of the box", Versionen vor 2009 leider nicht. In Deinem Fall musst Du für Unicode Support entweder Drittkomponenten (TntSysUtils mit WideFindFirst/WideFindNext) verwenden oder aber alternativ die Windows API nutzen (MSDN-Library durchsuchenFindFirstFileW und MSDN-Library durchsuchenFindNextFileW).
Fridolin Walther
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:40 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