AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Konvertierung der Umlaute einer Dosdatei im Tmemo
Thema durchsuchen
Ansicht
Themen-Optionen

Konvertierung der Umlaute einer Dosdatei im Tmemo

Ein Thema von joehd · begonnen am 13. Aug 2023 · letzter Beitrag vom 16. Aug 2023
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.580 Beiträge
 
Delphi 12 Athens
 
#2

AW: Konvertierung der Umlaute einer Dosdatei im Tmemo

  Alt 13. Aug 2023, 22:43
Zitat:
MIt einem HEXeditor habe ich schon geschaut es sollten die richtigen zeichen ersetzt werden.
In der Datei vielleicht noch, bevor DU falsch es eingelesen und kaputt germacht hast. (natürlich fehlen hierzu sämtliche Infos von dir)
Rate mal wofür der Debugger ist ... damit kann man nachsehn, was in der Variable steckt,
aber auf einem anderen Rechner, mit anderer ANSI-Codepage, würde das dann auch nichts mehr helfen, da diese Werte nicht vor sodern nach der Konvertierung liegen.

Zitat:
OEM Konvert bringt auch nix ...
Rausfinden welches die richtige Codepage ist?


Ja, weil deine Strings bereits Unicode sind, also bereits falsch von "ANSI" aus konvertiert wurden und somit die Zeichen nun andere Codes besitzen.
Sei froh, dass wir keine MultiByteCodepage haben, so wie Chinesen und Co.
Denn wie beim UTF-8 können falsche ungültige Zeichenpaare zu Fehlern führen, was auch gern die komplette Übersetzung vernichtet und z.B. einen Leerstring oder manchmal auch eine Exception liefert.

Finger weg von String/WideString/UnicodeString, beim einlesen.
AnsiString ... nja, eigentlich RawByteString oder dirtekt AnsiString(CP_OEMCP).

Delphi-Quellcode:
#132
Chr($84)
Char($84)
AnsiChar($84)
WideChar($84)
#$84
#$0084
ist nicht immer das Selbe, vor allem die letzten Beiden nicht.
Rein logisch mögen die letzten Beiden den "gleichen" Wert haben, bezogen auf ein Char aka WideChar, aber der Compiler interpretiert es unterschiedlich.
Das eine ist ANSI und wird mit der aktuellen Codepage übersetzt und das Andere ist direkt Unicode.


Einmal kann man direkt im Windows spielen, aber nur wenn mit ANSI-APIs gearbeitet.
Bei Google suchenSetFileApisToOEM

RawByteString, bzw. ein AnsiChar-Array bzw. aber besser ein Byte-Array (TBytes)
und dann
Delphi-Referenz durchsuchenTEncoding.GetString
Delphi-Referenz durchsuchenTEncoding.Convert


Oder bei sowas wie TStringList, TStringStream oder sonstwas die richtige Codepage bzw. Delphi-Referenz durchsuchenTEncoding.
TMBCSEncoding.Create(CP_OEMCP
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (13. Aug 2023 um 22:58 Uhr)
  Mit Zitat antworten Zitat
 


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