Autor Beitrag
crandzy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42

WIN 2000
D2006 Prof
BeitragVerfasst: Sa 19.04.08 08:08 
Hallo,

ich lese Dateien in ein TMemo-Feld ein... Allerdings wurde beim erstellen dieser Dateien eine andere Codepage verwendet, so das ich bei bestimmten Zeichen Sonderzeichen bekomme.

Da keine andere Codepage für diese Dateien passen, musste ich mir den Zeichensatz selbst zusammenstellen.

Gibt es in Delphi 2006 eine Möglichkeit die den Zeichensatz der Codepage zu wechseln.

Vielen Dank

_________________
In Wirklichkeit ist die Realität ganz anders
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 19.04.08 08:15 
Da würde ich ganz spontan dazu raten, Unicode-fähige Komponenten zu benutzen, wie z.B. TNT Unicode Controls. Das rumspielen mit der Codepage ist imho nicht wirklich eine vernünftige Lösung.

_________________
We are, we were and will not be.
crandzy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42

WIN 2000
D2006 Prof
BeitragVerfasst: Sa 19.04.08 08:19 
Unicode geht leider nicht, da ich Inhalte der Dateien in einer Datenbank speichern muss und die ist nur begrenzt Unicode fähig

_________________
In Wirklichkeit ist die Realität ganz anders
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 19.04.08 08:23 
Eine UTF-8-Kodierung der Datei sollte aber schon in die DB passen, oder nicht?

Sind die Dateien überhaupt reine Textdateien im üblichen Sinn? Oder stecken da vielleicht einige andere Informationen mit drin, die nicht zur Darstellung in Textform geeignet sind?

_________________
We are, we were and will not be.
crandzy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42

WIN 2000
D2006 Prof
BeitragVerfasst: Sa 19.04.08 08:29 
Es ist alles zur Darstellung in Textform geeignet.
Das Problem ist aber das ich bestimmen muss bei welchem Byte er welches Zeichen verwenden soll.
Ich habe daher eine Constante angelegt in der ich einen Blanko-Zeichensatz gespeichert habe.
Diesen Blanko-Zeichensatz habe ich dann entsprechend geändert.

const
CodeP: Array [0..255] of Char =
(#$00,#$01,#$02,#$03,#$04,#$05,#$06,#$07,#$08,#$09,#$0A,#$0B,#$0C,#$0D,#$0E,#$0F,
#$10,#$11,#$12,#$13,#$14,#$15,#$16,#$17,#$18,#$19,#$1A,#$1B,#$1C,#$1D,#$1E,#$1F,
#$20,#$21,#$22,#$23,#$24,#$25,#$26,#$27,#$28,#$29,#$2A,#$2B,#$2C,#$2D,#$2E,#$2F,
#$30,#$31,#$32,#$33,#$34,#$35,#$36,#$37,#$38,#$39,#$3A,#$3B,#$3C,#$3D,#$3E,#$3F,
#$40,#$41,#$42,#$43,#$44,#$45,#$46,#$47,#$48,#$49,#$4A,#$4B,#$4C,#$4D,#$4E,#$4F,
#$50,#$51,#$52,#$53,#$54,#$55,#$56,#$57,#$58,#$59,#$5A,#$5B,#$5C,#$5D,#$5E,#$5F,
#$60,#$61,#$62,#$63,#$64,#$65,#$66,#$67,#$68,#$69,#$6A,#$6B,#$6C,#$6D,#$6E,#$6F,
#$70,#$71,#$72,#$73,#$74,#$75,#$76,#$77,#$78,#$79,#$7A,#$7B,#$7C,#$7D,#$7E,#$7F,
#$80,#$FC,#$82,#$83,#$84,#$85,#$86,#$87,#$88,#$89,#$8A,#$8B,#$8C,#$8D,#$C4,#$8F,
#$90,#$91,#$92,#$93,#$F6,#$95,#$96,#$97,#$98,#$D6,#$DC,#$9B,#$9C,#$9D,#$9E,#$9F,
#$A0,#$A1,#$A2,#$A3,#$A4,#$A5,#$A6,#$A7,#$A8,#$A9,#$AA,#$AB,#$AC,#$AD,#$AE,#$AF,
#$B0,#$B1,#$B2,#$B3,#$B4,#$B5,#$B6,#$B7,#$B8,#$B9,#$BA,#$BB,#$BC,#$BD,#$BE,#$BF,
#$C0,#$C1,#$C2,#$C3,#$C4,#$C5,#$C6,#$C7,#$C8,#$C9,#$CA,#$CB,#$CC,#$CD,#$CE,#$CF,
#$D0,#$D1,#$D2,#$D3,#$D4,#$D5,#$D6,#$D7,#$D8,#$D9,#$DA,#$DB,#$DC,#$DD,#$DE,#$DF,
#$E0,#$E1,#$E2,#$E3,#$84,#$E5,#$E6,#$E7,#$E8,#$E9,#$EA,#$EB,#$EC,#$ED,#$EE,#$EF,
#$F0,#$F1,#$F2,#$F3,#$F4,#$F5,#$F6,#$F7,#$F8,#$F9,#$FA,#$FB,#$FC,#$FD,#$FE,#$FF);

Ich muss ihm ja nun nur sagen das er diesen Zeichensatz verwenden soll

_________________
In Wirklichkeit ist die Realität ganz anders
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 19.04.08 09:08 
Bist du dir sicher, dass du da einen Zeichensatz definierst? :gruebel: Wie sieht denn das Zeichen mit der Nr. $9C aus? Das hängt doch wohl von der aktuellen Codepage ab, du drehst dich da irgendwie im Kreis.

Ein Ansatz, der funktionieren könnte: Kodier deine Strings manuell um, z.B. so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
function DecodeString(aString: String):String;
var i: Integer;
begin
  for i := 1 to length(aString) do
    aString[i] := CodeP(Ord(aString[i]));
end;

_________________
We are, we were and will not be.
crandzy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42

WIN 2000
D2006 Prof
BeitragVerfasst: Sa 19.04.08 11:02 
Danke das war genau der Anstoss den ich gebraucht habe.

So funktioniert es...

_________________
In Wirklichkeit ist die Realität ganz anders