![]() |
Mein Progi soll japanisch sprechen!
Hallo miteinander,
ich habe da ein nettes Programm, das bereits alle europäischen Sprachen beherrscht. D.h. unabhängig von der Windowseinstellung kann eine Sprache ausgewählt werden und das Programm setzt alle Ausgabetexte in die Sprache um. Dies geschieht über normale Textdateien, in denen die Übersetzungen hinterlegt sind. So - und jetzt sollen die asiatischen Sprachen noch dazu kommen. Hat jemand ne Ahnung, wie man sowas anstellt? Die bislang benutzten Textdateien sind in 8-Bit ASCII, muss ich da evtl. auf 16Bit Unicode gehen und dann alle meine Labels, Strings, Buttons usw. auf Unicode erweitern? Wäre schön, wenn mir jemand da mal einen kleinen Einstieg geben kann Gruß Frank |
Re: Mein Progi soll japanisch sprechen!
|
Re: Mein Progi soll japanisch sprechen!
Zitat:
![]() |
Re: Mein Progi soll japanisch sprechen!
Zitat:
|
Re: Mein Progi soll japanisch sprechen!
Zitat:
Ist TntWare nicht genau diese "Frickellösung". Ich muss immer diesen Charset umschalten, wenn ich von Hand Captions eintrage. Irgendwie sieht das alles chaotisch aus!!! Gruß Frank |
Re: Mein Progi soll japanisch sprechen!
|
Re: Mein Progi soll japanisch sprechen!
Zitat:
Zitat:
Das Problem ist eher die Delphi-IDE (welche Delphi-Version hast Du denn?) welche kein Unicode kann. |
Re: Mein Progi soll japanisch sprechen!
Zitat:
Also jetzt mal konkret: Ich habe mir erst einmal ein kleines Testprogi erstellt, welches nix anderes tut, wie eine Unicode - TextDatei zeilenweise einzulesen. Die Texte in der Datei zeigt Notepad auch richtig als japanisch an. Also gehe ich davon aus, dass es Unicode ist. Die Texte werden in ein Array of WideString abgelegt und so ein einzelner WStr weise ich dann einem TntLabel.Caption zu. Das Ganze sieht dann so aus:
Delphi-Quellcode:
Bitte nicht an dem AnsiPos und Copy stören! es ist mir klar, das es nicht tut. Es wird ja auch nicht ausgeführt.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, TntForms, TntStdCtrls, TntButtons, TntSystem; type TForm1 = class(TTntForm) Lbl_01: TTntLabel; Btn_01: TTntBitBtn; Edt_01: TTntEdit; TntButton1: TTntButton; procedure FormCreate(Sender: TObject); procedure FormActivate(Sender: TObject); procedure TntButton1Click(Sender: TObject); private { Private-Deklarationen } txtErrTexts : Array of WideString; public { Public-Deklarationen } MaxErrTexts : Integer; procedure ReadUnicode(); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin ReadUniCode(); end; //======================================================================== procedure TForm1.FormActivate(Sender: TObject); var myWStr : WideString; begin myWStr := txtErrTexts[ 70]; Lbl_01.Caption := myWStr; end; //======================================================================== procedure TForm1.ReadUnicode(); var tf : TextFile; strLine : WideString; fname : String; idx : Integer; TntWideString begin //Fehlertexte fname := 'Txt_Errors.ger'; if ( FileExists( fname)) then begin SetLength( txtErrTexts, 0); MaxErrTexts := 0; AssignFile( tf, fname); Reset( tf); while not Eof( tf) do begin Readln( tf, strLine); idx := AnsiPos( ';', strLine); if idx <> 1 then begin //Kommentarzeilen beginnen mit ; if idx > 0 then strLine := Copy( strLine, 1, idx - 1); // Alles nach ; entfernen //strLine := AnsiDequotedStr( strLine, '"'); SetLength( txtErrTexts, MaxErrTexts + 1); txtErrTexts[ MaxErrTexts] := WideString( strLine); Inc( MaxErrTexts); end; end; CloseFile( tf); end; end; //======================================================================== procedure TForm1.TntButton1Click(Sender: TObject); begin Lbl_01.Caption := Edt_01.Text; end; end. Wenn ich das Ganze debugge, dann sieht das Textfeld txtErrTexts in ReadUnicode echt gut aus. Kommt der Debugger aber in FormActivate steht im Textfeld was anderes und das TntLabel zeigt nix an. Manchmal komm ich mir vor wie ein Anfänger!!! |
Re: Mein Progi soll japanisch sprechen!
Hallo,
kann es sein, dass ReadLn nur mit AnsiStrings zurechtkommt? Versuch doch mal eine TntStringList. Ist wahrscheinlich sowieso die bessere Alternative. Gruß xaromz |
Re: Mein Progi soll japanisch sprechen!
Zitat:
Gibt es ausser der Homepage von Troy irgend eine Hilfedatei oder Beschreibung zu den Tnt Controls? Gruß Frank |
Re: Mein Progi soll japanisch sprechen!
Hallo,
Zitat:
Gruß xaromz |
Re: Mein Progi soll japanisch sprechen!
wie sieht es denn aus, wenn ich mich entschließe einem programm nachträglich eine spache beizubringen, die unicodezeichen enthält?
müsste ich dann wirklich ALLE elemente, die text darstellen (labels, edits, buttons, ...) durch TntWare elemente ersetzen? das ist doch ne mordsarbeit. oder gibts da einen trick? wenn ich nämlich "Die Controls umzuschreiben ist ja wirklich easy" lese, macht mir das doch etwas mut. meine beschriftungen lese ich aus einer resource datei aus, weshalb ich mal davon ausgehe, dass es da keine probleme geben sollte, sobald die elemente unicode darstellen können. |
Re: Mein Progi soll japanisch sprechen!
Zitat:
|
Re: Mein Progi soll japanisch sprechen!
Nimmste einfach das DFM in Textansicht und ersetzt die jeweiligen Elemente ... sollte doch gehen, oder?
|
Re: Mein Progi soll japanisch sprechen!
hm, das müsste dann in den form dateien und auch in den ganzen units geändert werden. und da es von hand viel zu aufwendig wäre, müsste suchen/ersetzen herhalten und das ist mir nicht immer geheuer.
wäre es nicht vielleicht eleganter, die delphi-eigenen komponenten so umzuschreiben, dass die auch unicode können? das müsste doch eigentlich gehen. oder spricht da was dagen? es wäre ja auch kein nachteil, wenn alle delphianwendungen theoretisch unicode könnten. man muss es ja nicht nutzen. oder übersehe ich da einen haken? |
Re: Mein Progi soll japanisch sprechen!
Zitat:
Zitat:
Und wenn es so wie die TNT-Controls gemacht wird, sind mit sicherheit neue Fehler drin. Sei es aufgrund der Umsetzung oder weil die API-Funktionen sich etwas anders verhalten. Und Borland wird sowas definitiv nicht mehr für Win32 durchführen. |
Re: Mein Progi soll japanisch sprechen!
Zitat:
|
Re: Mein Progi soll japanisch sprechen!
Vielleicht könnte man ja ein eigenes Patch für die VCL schreiben... Die bettr. Stellen bräuchten im Grunde doch "nur" durch einfaches Find&Replace ersetzt und die Kompos anschließend neu compiliert zu werden :roll: .
Das hätte auf jeden Fall den Vorteil, dass alle Projekte auf einen Schlag Unicode-fähig wären. |
Re: Mein Progi soll japanisch sprechen!
Zitat:
Das ist genau das was Bernhard oben ansprach. TNT achtet darauf, daß die Programme sowohl auf Windows 9x/Me als auch auf den nativ unicodefähigen NTs laufen. Diesen Vorteil würdest du mit deiner Idee aufgeben, denn dafür ist ungleich mehr Arbeit nötig. Allen Respekt an Troy für seine TNT-Kompos! |
Re: Mein Progi soll japanisch sprechen!
Ich hab gerade das hier gefunden:
![]() Kennt sich jemand daamit aus? So wie es aussieht, macht diese Komponentet alle VCL-Komponenen automatisch unicode fähig... |
Re: Mein Progi soll japanisch sprechen!
Zitat:
|
Re: Mein Progi soll japanisch sprechen!
Ja, da hast Du recht :wall: ... zu früh gefreut :cry: .
Hm.. aber müsste es nicht theoretisch möglich sein, alle Komponenten einer Form zur Laufzeit unicode fähig zu machen :gruebel: ? |
Re: Mein Progi soll japanisch sprechen!
Zitat:
![]() |
Re: Mein Progi soll japanisch sprechen!
Zitat:
Hier mal 'ne auflistung welche Möglichkeiten man mit Delphi hat VCL.Win16 - Kein Unicode VCL.Win32 - Kein Unicode VCL.NET - Unicode FCL - Unicode VCL.Win64 - Unicode (Falls Borland 64-Bit unterstützen will) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:20 Uhr. |
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