Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wie Zugriff auf files und ordnern, die ASCII im Namen haben? (https://www.delphipraxis.net/51639-wie-zugriff-auf-files-und-ordnern-die-ascii-im-namen-haben.html)

Olli 18. Aug 2005 12:28

Re: Wie Zugriff auf files und ordnern, die ASCII im Namen ha
 
Zitat:

Zitat von Kyro
Wie kann ich zum beispiel ein verzeichnis auf der hdd in TNTChecklistbox laden MIT unicode zeichen?
Mit findfirst und TSearchRec kann das ja nicht klappen nachdem die ja die namen als string ausgeben!?

Back to the roots: MSDN-Library durchsuchenFindFirstFileW(), MSDN-Library durchsuchenFindNextFileW(), MSDN-Library durchsuchenFindClose() direkt als API-Funktionen benutzen.

Zitat:

Zitat von Kyro
ebenso das kopieren mit filestream ist von dateien die im namen unicode zeichen enthalten nicht möglich, oder?

Theoretisch schon, einziges Problem ist, daß du keine Unicodenamen übergeben kannst. Habe mir die Klasse noch nicht angeschaut, sollte man aber umprogrammieren können. Das Handle ist danach ein Handle, egal ob durch die ANSI- oder Unicode-API erlangt.

Zitat:

Zitat von Kyro
Mit CopyFileW klappt das kopieren generell zwar mit diesen dateien, kann aber zum beispiel kein resuming oder statusanzeige ermöglichen.

Mit Statusanzeige kannst du's haben (Shellstil): MSDN-Library durchsuchenSHFileOperation()

Bernhard Geyer 18. Aug 2005 13:23

Re: Wie Zugriff auf files und ordnern, die ASCII im Namen ha
 
Zitat:

Zitat von Kyro
Also ich hab mir mal die TNTControls angesehen, bei denen funktioniert zwar das anzeigen von unicode zeichen... bringt mir aber nicht all zu viel.... aber danke für den tipp!

Wie kann ich zum beispiel ein verzeichnis auf der hdd in TNTChecklistbox laden MIT unicode zeichen?
Mit findfirst und TSearchRec kann das ja nicht klappen nachdem die ja die namen als string ausgeben!?

ebenso das kopieren mit filestream ist von dateien die im namen unicode zeichen enthalten nicht möglich, oder?
Mit CopyFileW klappt das kopieren generell zwar mit diesen dateien, kann aber zum beispiel kein resuming oder statusanzeige ermöglichen.

Danke für eure Hilfe!!!!

Für viele der Probleme sollte es Wide-Versionen in den TntWare-Units geben.

Kyro 18. Aug 2005 14:43

Re: Wie Zugriff auf files und ordnern, die ASCII im Namen ha
 
Danke!!!!!!

Verzeichnis auflisten hab ich schon mal zusammenbekommen...
hoffe dass das mit dem kopieren auch noch klappt...
vor allem so dass ich nicht wieder alles umschreiben muss

Aber warum steht denn auch nicht sowas als große fette Warnung in der delphi hilfe neben den ANSI prozeduren !!! :-D (kleiner scherz)

Olli 18. Aug 2005 14:46

Re: Wie Zugriff auf files und ordnern, die ASCII im Namen ha
 
Zitat:

Zitat von Kyro
Aber warum steht denn auch nicht sowas als große fette Warnung in der delphi hilfe neben den ANSI prozeduren !!! :-D (kleiner scherz)

Leider stammt Delphi aus Zeiten, wo Windows 9x populärer war als die NT-Linie ... deswegen. Schade, aber es ist so.

Olli 21. Aug 2005 21:44

Re: Wie Zugriff auf files und ordnern, die ASCII im Namen ha
 
Zitat:

Zitat von Olli
Alle Zeichenketten aus Ordinalwerten über 255 ($FF) müssen in den mir bekannten Delphiversionen extra durch Aneinanderkettung von WideChar-Casts erzeugt werden.

So kann man sich täuschen. Ich habe es mir vor 2 Tagen im Disassembler angeschaut und es ist so, daß der Compiler (D3 und D4) zwar einen echten Literalstring in Unicode erzeugt, leider wird aber alles bis auf das untere Byte des WideChars abgeschnitten (d.h. das obere Byte wird $00).
Fazit, es geht nicht wie oben geschildert ... offenbar gibt es keine normale Methode um in Delphi einen Unicode-String einzufügen (es sei denn über eine Ressourcendatei - extern - oder über das UTF-8-Format) :? ...

Wäre schön, wenn sich Leute finden würden um das mit späteren Versionen zu testen (D5 aufwärts).

Kyro 21. Aug 2005 22:38

Re: Wie Zugriff auf files und ordnern, die ASCII im Namen ha
 
@Olli ... leider versteh ich dein letztes posting zwar nicht ganz aber wenn du damit andeuten willst dass man mit der funktion "WideChar(n)" nicht alle Unicode-Zeichen replizieren kann, kann ich dir nur recht geben, hatte damit nicht viel erfolg, mit den TNT Components allerdings schon, also ich kann endlich dateien kopieren die im namen unicode zeichen enthalten..... :gruebel:

Allerdings gibt es nicht für alle Prozeduren alternativen die unicode unterstützen, oder ich kann sie nicht finden.... wie sieht es zum beispiel mit den Parametern aus
Normalerweise hab ich die über "Paramstr(n)" abgerufen... aber darüber bekommt man eben nur wie der funktionsname schon vermuten lässt ein String und kein widestring, und soetwas wie ParamWideStr(n) gibt es wohl zumindest in Delphi 7 nicht?!?? :wall:

Falls ich das mit dem Parameter auch noch hinbekomme hab ich glaub ich alles "notewendigste" für meinen unicode support für mein app.... und ich glaub das wird so ziemlich das letzte prog sein was ich mit D7 mache, da sieht man schon dass es ziemlich "altert". :(

jfheins 21. Aug 2005 22:48

Re: Wie Zugriff auf files und ordnern, die ASCII im Namen ha
 
http://www.delphipraxis.net/internal...ect.php?t=8873 ;)

Olli 21. Aug 2005 22:49

Re: Wie Zugriff auf files und ordnern, die ASCII im Namen ha
 
Zitat:

Zitat von Kyro
@Olli ... leider versteh ich dein letztes posting zwar nicht ganz aber wenn du damit andeuten willst dass man mit der funktion "WideChar(n)" nicht alle Unicode-Zeichen replizieren kann

Im Grunde meine ich genau dies. Kannst du auch irgendwie Unicodestrings, wie zB diesen: "Сніжок.txt" in deinen Quellcode einbauen und auf eine im Explorer (!) so benannte Datei zugreifen?

Zitat:

Zitat von Kyro
Allerdings gibt es nicht für alle Prozeduren alternativen die unicode unterstützen, oder ich kann sie nicht finden.... wie sieht es zum beispiel mit den Parametern aus

Dazu habe ich vor langer Zeit etwas im DF verfaßt:
http://www.delphi-forum.de/topic_die...sen_15503.html

Edit:
Holla die Waldfee, da hat jfheins wohl ein besseres Gedächtnis als ich. Habe es wohl auch nochmal hier in der DP gepostet. :mrgreen: ... und exakt zur gleichen Zeit :lol:

Kyro 21. Aug 2005 23:26

Re: Wie Zugriff auf files und ordnern, die ASCII im Namen ha
 
Zitat:

Zitat von Olli
Kannst du auch irgendwie Unicodestrings, wie zB diesen: "Сніжок.txt" in deinen Quellcode einbauen und auf eine im Explorer (!) so benannte Datei zugreifen?

Also bis jetzt nur über die TNTComponents, also wenn ich zum beispiel TNTEdit1.text auf Сніжок.txt setze dann kann ich auch mit der datei die so im explorer benannt wurde arbeiten....

Delphi 7 speichert das so: Text = #1057#1085#1110#1078#1086#1082'.txt'

Danke olli und jfheins .. werde mir das mit den parametern anschaun, schaut aber schon mal verdammt gut aus!! :thumb:

Olli 21. Aug 2005 23:33

Re: Wie Zugriff auf files und ordnern, die ASCII im Namen ha
 
Zitat:

Zitat von Kyro
Delphi 7 speichert das so: Text = #1057#1085#1110#1078#1086#1082'.txt'

Cool, dann können neuere Delphiversionen also doch mit Unicode-Zeichenliteralen umgehen. Jetzt wäre noch interessant herauszufinden ab welcher Version das möglich ist. Als übliche Verdächtige bleiben nur noch Version 5-7 (wir können ja nicht ausschließen, daß 7 die erste mit dieser Unterstützung war). Bei Delphi 4 wird aus #1057 in der kompilierten Datei ein #33, weil #1057 = #$0421 ... und der (rote) obere Teil "abgeschnitten" wird, dadurch erhalten wir #33 = #$21.

Das mit den beiden oben verlinkten Themen (mit gleichem Inhalt) sollte auch mit WideStrings zusammenpassen. Versuche mal eine Zuweisung. Sollte ohne weiteres gehen. Du kannst dir natürlich auch deine eigenen Wide-Versionen für ParamStr() usw. schreiben ;)

@Daniel: Danke für die Anpassung oben im Beitrag :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:16 Uhr.
Seite 3 von 4     123 4      

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