Unicode _wfindfirst
-
hi,
bitte nich lachen aber,
ich möchte diese funktion verwenden: _wfindfirst
und in der hilfe steht dazu:
"Wenn Unicode definiert ist, verwendet die Funktion _wfindfirst die folgende Struktur _wffblk"
wie definiert man denn UNICODE im Borland 6 für diese Funktion ?
-
hi,
also ich hab jetzt mal diese Unicode Funktion verwendet: _wfindfirst
Es ergibt sich ein Problem welches für mich nicht lösbar ercheint.
Im Verzeichniss befindet sich eine Datei die hat diese Bezeichnung: Českáčù.txt
Genau hier liegt mein Problem, beim auflisten der Dateinamen in dem Verzeichniss
wird diese eine Datei immer so dargestellt: eskߨ.txtKann ich das irgendwie ändern ? mit was lese ich den Dateinamen richtig ein ?
Das hier geht leider auch nicht.
#include <vcl.h> #include <stdio.h> #include <dir.h> #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char* argv[]) { struct _wffblk wffblk; int done; wchar_t *mF = L"*.*"; done = _wfindfirst(mF,&wffblk,0); while (!done) { wprintf(L" %s\n", wffblk.ff_name); done = _wfindnext(&wffblk); } system("pause"); return 0; }
-
Der Builder 6 dessen VCL unterstützt kein Unicode erst ab der Version 2009 wurde Unicode eingeführt aber du kannst zB über Fremdkomponenten deine Anwendung Unicode tauglich machen z.B. mit TNTWare Unicode, TMS Unicode Component Pack usw. oder auch selbst den Text darstellen mit der Win API DrawTextW.
-
Hi,
@VergissEs
ich dachte das sich das nur auf die Komponenten im Borland bezieht da diese ja nur ANSI (255 Zeichen) Unterstützen.So in der Konsole bekomm ich die Ausgabe bis jetzt nicht gebacken,
aber in der MessageBoxW klappt es mit dem Dateinamen Českáčù.txt , nur bringt mir das eben micht viel in ner MessageBox.
#include <vcl.h> #include <dir.h> #include <iostream.h> #pragma hdrstop #pragma argsused int main(int argc, char* argv[]) { struct _wffblk wffblk; int done; wchar_t *mF = L"*.*"; done = _wfindfirst(mF,&wffblk,0); while (!done) { MessageBoxW(0, wffblk.ff_name, wffblk.ff_name, 1); //Dateiname:wird korrekt angezeigt std::wprintf(L"%s\n", wffblk.ff_name); //klaapt leider nicht wie gewollt (sieht verkrüppelt aus) done = _wfindnext(&wffblk); } system("pause"); return 0; }
-
Hast also eine pure Konsolen Anwendung
evtl hilft das dir weiter ? bzw evtl noch die Konsolen Schriftart ändern...http://docwiki.embarcadero.com/RADStudio/2010/en/Using_Unicode_in_the_Command_Console
-
VergissEs schrieb:
Hast also eine pure Konsolen Anwendung
naja zum testen solls erstmal sein.
Das ändern der Codepage auf 65001 + Lucida Console ergibt leider nur: esk.txt
kann man nix machen.Mein Ziel war es es eigentlich von dieser Datei: Českáčù.txt das icon zu ermitteln und in meine Applikation zu setzen.
Mit der UNICODE Funktion _wfindfirst funktioniert das einlesen dieses Dateinamens: Českáčù.txt einfach Super!.
In Verbindung mit SHFILEINFOW und TIcon kann damit dann auch ganz locker das Icon ermittelt werden.
Mit den ANSI Funktionen hatte ich damit keine Chance und das Icon wurde nicht angezeigt.Blöd ist das wchar_t schwer zu handhaben ist meiner Meinung nach, jedenfalls schwieriger als AnsiString
und die Komponenten im Borland 6 UNICODE nicht unterstützen.
-
Hab mir mal das hier: TMS Unicode Component Pack compiliert, UNICODE funktioniert tatsächlich damit, leider nicht Free aber da kann man ja noch nachhelfen
aber vorher teste ich mal das hier noch: TNTWare Unicode.
-
TntUnicodeControls 2.3.0 hat sich zwar beschissen installieren lassen aber es läuft und tut das was es soll und is Free und das ist schön.
-
Hallo,
Du könntest auch auf eine aktuellere Builder-Version (2010) umsteigen. Die beherrscht nämlich Unicode.