AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Betriebssysteme Verschiedene Zeichensätze in einer Anwendung !!??!!
Thema durchsuchen
Ansicht
Themen-Optionen

Verschiedene Zeichensätze in einer Anwendung !!??!!

Ein Thema von LPaul · begonnen am 28. Jul 2004 · letzter Beitrag vom 8. Aug 2004
Antwort Antwort
LPaul

Registriert seit: 28. Jul 2004
Ort: Berlin
5 Beiträge
 
#1

Verschiedene Zeichensätze in einer Anwendung !!??!!

  Alt 28. Jul 2004, 13:52
In meinem Programm (welches bis zu Windows-NT sehr gut funktioniert(e) ), nutze ich zwei RichEdit's, denen ich per Objektmanager zwei verschiedene Charsets zuordnete. Dann versorgte ich die Lines mit entsprechenden chars (eines in Lateinisch, eines, z.B. kyrillisch (CyrillicWindows oder auch KOI-8). Die Anzeige der Schriftzeichen klappte wunderbar.

Seit Windows 2000 kriege ich das nicht mehr hin .
Anstelle der fremden Schriftzeichen werden die berühmten Hyroglyphen dargestellt, obwohl in den verwendeten Schriftarten (z.B. Arial) auch die kyrillischen Zeichen enthalten sind und auch richtig zugeordnet werden. Der Parameter Charset, den ich programmiere, wird von Windows völlig ignoriert.
Mit der Gebietsschema -Umschaltung habe ich schon experimentiert, ohne Erfolg .

Hat jemand eine Idee?
Hat jemand mit Delphi (4-7) eine Desktop-Anwendung programmiert, in der verschiedene Schriftsätze (charsets) verwendet werden? (die unter Windows2000, XP auch noch dargestellt werden)?

Frustrierend ist, daß die Programme auf dem alten NT-Rechner problemlos laufen...
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#2

Re: Verschiedene Zeichensätze in einer Anwendung !!??!!

  Alt 28. Jul 2004, 14:58
Am besten verwendst du entsprechende Unicode-Komponenten, die Delphi-Standardkomponenten können das von Haus aus nicht.
Der Grund liegt bei den verwendetetn API-Aufrufen, z.B. muss SendMessageW() statt SendMessage() verwendet werden.
Siehe z.B. hier.
  Mit Zitat antworten Zitat
LPaul

Registriert seit: 28. Jul 2004
Ort: Berlin
5 Beiträge
 
#3

Re: Verschiedene Zeichensätze in einer Anwendung !!??!!

  Alt 28. Jul 2004, 15:17
Danke erstmal dafür.
Ich werd' den alten Code wohl nochmal ziemlich weit von unten anpacken müssen .
Dennoch: Selbst die Windows-Zeichentabelle (Zubehör) zeigt für den Zeichensatz Arial im Bereich über 128 die kyrillischen Zeichen an (8-Bit-Chars). Genau diese gebe ich an die RichEdit.Lines.... Eigentlich kein Problem und bis zu W2K wars ja auch keines. Einfach nur 8bit-chars in 8bit Strings.

Also, falls jemand mal eine wirklich übersichtliche Info (Artikel, Buch o.ä.) darüber findet,wie die verschiedenen Windows eigentlich die Zeichentabellen handlen und wie diese mit Codepages und Charsets verbandelt sind - ich wäre dankbar für diese INFO.
Beste Grüße!
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#4

Re: Verschiedene Zeichensätze in einer Anwendung !!??!!

  Alt 28. Jul 2004, 15:31
Benutze mal einen Stream um den (offensichtlich) fehlerhaften RTF-Quelltext in ein Memo zu schreiben. Und schau mal nach, ob der verwendete Zeichsatz stimmt.

BTW, Welche Delphi-Version?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  RichEdit1.Clear;
  RichEdit1.Font.Charset := RUSSIAN_CHARSET;
  RichEdit1.Lines.Add('Çäðàâñòâóëòå!'); // Здравствулте!
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  Stream: TStringStream;
begin
  Stream := TStringStream.Create(EmptyStr);
  try
    RichEdit1.Lines.SaveToStream(Stream);
    Memo1.Text := Stream.DataString;
  finally
    Stream.Free;
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  Stream: TStringStream;
begin
  Stream := TStringStream.Create(Memo1.Text);
  try
    RichEdit1.Lines.LoadFromStream(Stream);
  finally
    Stream.Free;
  end;
end;
Bei mir ist der RTF-Quelltext mit Delphi 6 (Update Pack 2, RTL Update 3) insofern fehlerhaft, als dass der zweite Font (\f1) erst nach dem Text selektiert wird. Nach Einfügen von \f1 nach \fs16 inklusive Zurückschreiben mit Button3 führt zum gewünschten Ergebnis

Ist zwar keine Lösung, aber erklärt das Problem.
Vielleicht kann man das Problem fixen, indem man die erste Zeile des RTF-Quelltextes fixt...


Gruss Nico
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.173 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Verschiedene Zeichensätze in einer Anwendung !!??!!

  Alt 28. Jul 2004, 16:03
Falls Du wirklich ernsthaft mit mehreren verschiedenen Sprachen in einer Anwendung arbeiten willst, so kann ich dir nur empfehlen dein Programm auf Unicode umzustellen. Mit Codepage/Charsets zu arbeiten wird nicht für alle Controls/Fälle gehen.

In der Ausgabe 5.2003 habe ich einen Artikel über das Themas Delphi + Unicode geschrieben (We are a world).

Als weiter Komponenten sei dir empfohlen:
ElPack (Unicode ab Win95 + Enhanced-Controls)
TNT-Controls (Unicode ab NT, Standard-Controls)
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
LPaul

Registriert seit: 28. Jul 2004
Ort: Berlin
5 Beiträge
 
#6

Re: Verschiedene Zeichensätze in einer Anwendung !!??!!

  Alt 28. Jul 2004, 17:32
Also - Fetten Dank an NicoDE !!!
Ich hab das nachvollzogen - es stimmt. der RTF-Code wird falsch erzeugt!
(Wenigstens eine saubere Erklärung!)
Ich werd' drüber grübeln, ob mir ein Work-Around dazu einfällt.
Der Trick mit dem Editieren von RTF im Memo war jedenfalls SUPER

Ansonsten -auch an die anderen besten Dank - habt ja recht, Unicode ist für sowas sicher die Zukunft, aber das bedeutet eben für alten Code ziemlich viel Arbeit. Vielen Dank auch für die Links!
  Mit Zitat antworten Zitat
LPaul

Registriert seit: 28. Jul 2004
Ort: Berlin
5 Beiträge
 
#7

Re: Verschiedene Zeichensätze in einer Anwendung !!??!!

  Alt 28. Jul 2004, 17:47
Noch ein Nachtrag zur Delphi-Version:
Ich habe den Trick von NicoDE jetzt mit Delphi6 und Delphi7 ausprobiert - das gleiche Ergebnis: Die Umschaltung des Fonts (\f1) erfolgt in beiden Versionen gleich - falsch.
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#8

Re: Verschiedene Zeichensätze in einer Anwendung !!??!!

  Alt 28. Jul 2004, 18:07
Wäre interessant, das gleiche Binary unter Windows NT 4.0 zu testen und die RTF-Quelltexte zu vergleichen.
Vielleicht hat sich 'nur' das Verhalten des RichEdit-Controls auf dem Weg von NT4 zu NT5 geändert...
  Mit Zitat antworten Zitat
LPaul

Registriert seit: 28. Jul 2004
Ort: Berlin
5 Beiträge
 
#9

Re: Verschiedene Zeichensätze in einer Anwendung !!??!!

  Alt 28. Jul 2004, 21:09
Ich hab das natürlich inzwischen ausprobiert, es ist so.
Der generierte RTF-Code unterscheidet sich wesentlich (Siehe anliegendes Bild).
Das kann ja dann doch wieder mal nur an der Windows-Mutation liegen

Ich muß noch dazu sagen, ich habe jeweils mit der Delphi professional Version gearbeitet. Bei "Enterprise" soll ja bezüglich RichEdit-Methoden und RTF generell noch etwas mehr drin sein. Aber wie man sieht, hat es daran ja nicht gelegen.

Danke nochmals an alle Helfer.
Wenn ich die Sache elegant gelöst kriege, melde ich mich noch mal.
Miniaturansicht angehängter Grafiken
compare_rtfsmall.jpg  
  Mit Zitat antworten Zitat
wnew

Registriert seit: 8. Aug 2004
2 Beiträge
 
#10

Re: Verschiedene Zeichensätze in einer Anwendung !!??!!

  Alt 8. Aug 2004, 19:32
Ich habe auch dieses Problem getroffen. Es ist interessant, dass TMemo korrekt mit der Umstellung auf verschiedene Zeichensätze umgeht. TRichEdit kann leider das nicht. Und das bewundert mich, sowie diese beide Komponenten sind von TCustomMemo abgeleitet.
Aber ich habe festgestellt, dass dieses Problem im Umweg kann gelöst werden – mit der Verwendung speziale Schriftarten z.b: PROMT Helv Cyr Spec.

P.S. Die Untersuchung der Quellcode vom Module RichEdit hat mir auch nichts gebracht, es ist zu kompliziert für mich Und ich werde sehr dankbar, wenn ein offizielle Weg für Lösung hier gezeigt wird.
  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 00:15 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