AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Das eigene Programm in Russisch

Ein Thema von torud · begonnen am 26. Apr 2007 · letzter Beitrag vom 24. Jul 2007
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#11

Re: Das eigene Programm in Russisch

  Alt 26. Apr 2007, 13:37
Zitat von CCRDude:
Zitat von Bernhard Geyer:
Wolltest Du nicht mal nach Freepascal wechseln ...
Was genau hat das damit jetzt zu tun?
Sorry. da hat <OffTopic></OffTopic> gefehlt.

Zitat von CCRDude:
Ich sprech mich ja nicht dafür aus, daß Codepages & ANSI die ideale Lösung sind, nur daß die eben eine durchaus gut funktionierende Lösung sind, wenn man ein einfaches ANSI-Projekt mit durchgehend einer Benutzersprache umstellen will, und eben eigentlich nicht die Probleme machen muss, die Du erwähntest.
Dann lassen wir wieder mal den Fragesteller zu Wort kommen ob für ihn die Codepage-Lösung reicht oder er eine Lösung ohne die Codepage-Einschränkungen benötigt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#12

Re: Das eigene Programm in Russisch

  Alt 26. Apr 2007, 13:52
Danke für die Nachfrage. Also ich habe jetzt bei mir erstmal noch ein russisches Tastaturlayout hinzugefügt. Damit kann ich jetzt in Textdateien schreiben, muss diese aber aber UniCode speichern, damit nix verloren geht. Soweit hoffen ich, habe ich das schon mal verstanden.

Habe ich es richtig verstanden, dass ich das Tool einfach so lassen soll, alle Komponenten auf Russischen Char umstellen soll und dann eine Übersetzungsdatei laden soll?

So in der Art

[Deutsch]
btn_danke.caption = "Danke"

[Russisch]
btn_danke.caption = "спосйбо"

? Und das dann als UniCode-Datei abspeichern???
Danke
Tom
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#13

Re: Das eigene Programm in Russisch

  Alt 26. Apr 2007, 13:58
So gehts schon mal nicht. Ich erhalte zwar keine Fragezeichen mehr in dem Programm, aber dafür dann auch gar keinen Inhalt. Ich probiere mal weiter...

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  myList:TStringlist;
begin
  myList:=TStringlist.Create;
  myList.LoadFromFile('c:\test.txt');
  Label1.Caption := WideStringToStringEx(myList.Strings[0],251);
end;
Inhalt der Textdatei:
Delphi-Quellcode:
ЕУЧЕ
????
TEXT
CP_ACP
CP_MACCP
CP_OEMCP
CP_SYMBOL
CP_THREAD_ACP
CP_UTF7 Windows
CP_UTF8 Windows

Habe jetzt auch diese CodePages versucht, aber ich erhalte NIE ЕУЧЕ im Label angezeigt.
Danke
Tom
  Mit Zitat antworten Zitat
CCRDude
(Gast)

n/a Beiträge
 
#14

Re: Das eigene Programm in Russisch

  Alt 26. Apr 2007, 14:08
Eine TStringList kann keine WideStrinsg, d.h. die brauchst Du auch nicht als WideString konvertieren. Die bereits erwähnten TNTWare Controls haben imho eine TWideStringList (und es gibt auch noch einige andere).
Oder einen Editor nehmen, der Dich die Codepage auswählen lässt (zur Not auch in Delphi selber schreiben, musst ja nur ein TMemo mit dem entsprechenden Charset versehen und nen Speicherknopf dazupacken), dann kannst Du TStringList nehmen und musst gar nichts mehr konvertieren.
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#15

Re: Das eigene Programm in Russisch

  Alt 26. Apr 2007, 14:11
Für mich waren und sind diese Codepages und Charsets bisher bömische Dörfer. Also einfach ein Memo nehmen und von dort laden? Muss aber dann schon wieder zwingend eine der TNT´s sein, oder? Ok, dann werde ich es später mal versuchen. Warum muss das alles so kompliziert sein?
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#16

Re: Das eigene Programm in Russisch

  Alt 26. Apr 2007, 14:16
Zitat von torud:
Für mich waren und sind diese Codepages und Charsets bisher bömische Dörfer.
Deshalb mein vorschlag: lass es und nimm gleich Unicode-Controls.

Zitat von torud:
Warum muss das alles so kompliziert sein?
Delphi wurde zu einer Zeit entwickelt (Delphi 1) als Windows noch kein Unicode konnte. Und bisher hat es Borland/Codegear vermieten (Zeit/Kostenaufwand/Kompatiblität) alles komplet auf Unicode umzustellen sodas das alles im "Hintergrund" ablaufen würde.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
CCRDude
(Gast)

n/a Beiträge
 
#17

Re: Das eigene Programm in Russisch

  Alt 26. Apr 2007, 14:19
Naja, nochmal von vorne

1. Wenn man ein Projekt frisch anfängt, sollte man gleich Unicode in Betracht ziehen, und dafür z.B. die TNTWare Controls (edit: wie Bernhard gerade sagte).

2. Wenn man ein bestehendes Projekt mit Komponenten, die es nur in ANSI gibt, umstellt (übrigens aus genau diesem Grund hab ich mir die LMDTools nie angetan, war mir zu unsicher, ob die mal Unicode können würden), geht es auch per ANSI.

Was ich mit dem TMemo meinte, völlig ohne Unicode-Komponenten:
  • Neues Projekt erstellen
  • TMemo hinzufügen
  • Memo1.Font.Charset = RUSSIAN_CHARSET;
  • Knopf hinzufügen, der Memo1.Lines.SaveToFile('c:\meinrussisch.txt'); macht.
  • Mit dem Mini-Programm speicherst Du dann einfach eine Textdatei, die Du später auch OHNE Unicode-Konvertierungen oder Controls umwandeln kannst, in der Dein Codeschnipsel von vorhin einfahc mit Label1.Font.Charset := RUSSIAN_CHARSET; Label1.Caption := myList[0]; enden würde.

Womit ich jetzt nicht sagen will, daß eine rein Textdatei als TStringList ausgelesen wirklich geeignet wäre, aber als Ansatz zum Lernen kannst Du das ja mal versuchen.

Kurze Erklärung zu Codepages: normale strings in Pascal bestehen aus normalen chars. Ein Char kann halt maximal 256 verschiedene Zeichen abbilden, das reicht natürlich nicht für alle Alphabete der Welt Also hat man unterschiedliche Bedeutungen für die einzelnen Zeichen erfunden - Zeichen #65 ist auf "Standard"-Codepages (englisch, deutsch um es vereinfacht zu sagen) immer das kleine 'a', auf russichen Codepages immer das Zeichen für Vodka (letzeres natürlich nur erfunden, leider kenn ich keine echten russischen Buchstaben ).

@Bernhard Geyer: und leider werben Sie trotzdem groß mit Unicode-Unterstützung, meinen damit aber nur die IDE
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#18

Re: Das eigene Programm in Russisch

  Alt 26. Apr 2007, 14:46
Zitat von CCRDude:
@Bernhard Geyer: und leider werben Sie trotzdem groß mit Unicode-Unterstützung, meinen damit aber nur die IDE
Nicht ganz. Die VCL.NET ist Unicode-Enabled genauso wie WinForms. Die "Gott hab sie Selig" CLX-GUI-Controls waren auch teilweise Unicode-Enbled (Qt hat diese Fähigkeit). Und falls ein Win64-Port kommen wir so wird diese mit sicherheit auch Win64-Fähig sein. Nur die "alte" Win32 wurde noch nicht erweitert.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#19

Re: Das eigene Programm in Russisch

  Alt 26. Apr 2007, 19:30
Hallo nochmals,

also nun klappt es. Ok, ich würde also wie folgt vorgehen und ich bitte hiermit nochmal sum Einspruch, falls erforderlich.

In einer Schleife alle Controls und Forms durchsuchen und den Font-Charset ändern.
Dabei schauen, ob das Control nen Namen, eine Caption bzw. einen Text besitzt. Den Namen in die Ini schreiben und dazu den Wert des Textes oder der Caption.

Später im "Translator" in die Memo die Ini laden und den russischen Kollegen alles übersetzen lassen und speichern nicht vergessen.

Gangbarer und sinnvoller Weg? Auf jeden Fall Danke ich euch!!!

Edit:

Gerade eben habe ich festgestellt, dass dies zwar wunderbar mit einem Label funktioniert aber nicht mit nem Button und der Cpation eines Forms und dabei habe ich definitiv den Charset eingestellt und auch Tahoma als Schriftart gewählt. Was ist denn nun wieder?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  myList:TStringlist;
begin
  //erstmal speichern was drin ist
  Memo1.Lines.SaveToFile('c:\test.txt');

  //und dann taufrisch rausholen was drin ist
  myList:=TStringlist.Create;
  myList.LoadFromFile('c:\test.txt');

  //und verteilen
  Label1.Caption := myList.Strings[0];
  self.Caption := myList.Strings[1];
  Button1.Caption := myList.Strings[2];
end;
Die Memo wird beim Createn geladen. Da stimmt alles und steht auch alles kyrillisch drin...
Danke
Tom
  Mit Zitat antworten Zitat
CCRDude
(Gast)

n/a Beiträge
 
#20

Re: Das eigene Programm in Russisch

  Alt 26. Apr 2007, 20:38
Zu beachten gibt es z.B. noch diverse Font-Eigenschaften von Screen, z.B. Screen.MenuFont etc. (siehe Hilfe unter TScreen).. auch im Application-Objekt findet sich beispielsweise noch ein BiDiMode (wobei der für russisch keine Rolle spielt)...

Nur so ganz nebenbei fällt mir ein, hat Delphi nicht sogar auch eine integrierte Lokalisierungshilfe? Ich hab die nie verwendet, weil 500KB+ pro Sprachdatei selbst für das kleinste Projekt für mich nicht in Frage kamen, aber drauf hinweisen kann ja nicht schaden
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 17:36 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