AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi "ANSI" zu "Unicode", zu "Big Endian... konver
Thema durchsuchen
Ansicht
Themen-Optionen

"ANSI" zu "Unicode", zu "Big Endian... konver

Ein Thema von Delphi Star · begonnen am 19. Mai 2005 · letzter Beitrag vom 20. Mai 2005
Antwort Antwort
Delphi Star

Registriert seit: 4. Apr 2004
432 Beiträge
 
Delphi 2005 Personal
 
#1

"ANSI" zu "Unicode", zu "Big Endian

  Alt 19. Mai 2005, 17:19
Wie kann man "ANSI" zu "Unicode", zu "Big Endian Unicode" und zu "UTF-8" konvertieren
Real programmers code in binary
SwapIt: Punkte
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: "ANSI" zu "Unicode", zu "Big En

  Alt 19. Mai 2005, 17:25
MyUnicodeString := MyAnsiString; // Compiler-Magic Big Endian Unicode: Nur relevant wenn Datei gespeicher wird -> ElPack oder TntWare-Komponentensammlung
MyUtf8String := Utf8Encode(MyUnicodeString);
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#3

Re: "ANSI" zu "Unicode", zu "Big En

  Alt 20. Mai 2005, 09:37
Delphi-Quellcode:
var
  wBuf: PWideChar; // unicode
  aBuf: PAnsiChar; // Ansi :)
  sText: string;

begin
  GetMem(wBuf, MAX_PATH);
  GetMem(aBuf, MAX_PATH);
  MultiByteToWideChar(CP_UTF8, 0, aBuf, MAX_PATH, wBuf, MAX_PATH); // ansi -> utf8
  //...
  sText := WideCharToString(wBuf); // utf8 -> string
  //...
  WideCharToMultiByte(CP_UTF8, 0, wBuf, MAX_PATH, aBuf, MAX_PATH, nil, nil); // utf8 -> ansi
  FreeMem(wBuf, MAX_PATH);
  FreeMem(aBuf, MAX_PATH);
end;
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#4

Re: "ANSI" zu "Unicode", zu "Big En

  Alt 20. Mai 2005, 10:07
Erstens ist AllocMem besser, da es den alloziierten Speicher initialisiert und zweitens rechnen die Funktionen in Bytes, also ist GetMem(wBuf, MAX_PATH*SizeOf(WideChar)); richtig.

Letztlich kann man sich das alles sparen. Man weise einen string einem WideString zu bzw umgekehrt und Delphi wird es schon richten.

Fuer Big Endian muss ein BOM vorhanden sein. Sprich das erste Zeichen des Strings sagt den Endian an. $FFFE bzw $FEFF.
Utf8Encode duerfte das erledigen.
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#5

Re: "ANSI" zu "Unicode", zu "Big En

  Alt 20. Mai 2005, 11:22
funktionieren tuts auch so, aber du hast natürlich recht.
ich benütz dennoch GetMem lieber als AllocMem, da procedures 800% schneller als functions sind.
  Mit Zitat antworten Zitat
vt670

Registriert seit: 20. Mai 2005
24 Beiträge
 
#6

Re: "ANSI" zu "Unicode", zu "Big En

  Alt 20. Mai 2005, 11:28
Zitat von Robert Marquardt:
Erstens ist AllocMem besser, da es den alloziierten Speicher initialisiert und zweitens rechnen die Funktionen in Bytes, also ist GetMem(wBuf, MAX_PATH*SizeOf(WideChar)); richtig.

Letztlich kann man sich das alles sparen. Man weise einen string einem WideString zu bzw umgekehrt und Delphi wird es schon richten.

Fuer Big Endian muss ein BOM vorhanden sein. Sprich das erste Zeichen des Strings sagt den Endian an. $FFFE bzw $FEFF.
Utf8Encode duerfte das erledigen.
Dies trifft leider nur bei Delphi Versionen > 2.01 zu.
Es ist besser zu schweigen und als Idiot zu gelten als zu Reden und dadurch den Beweis anzutreten.
A. Lincoln
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#7

Re: "ANSI" zu "Unicode", zu "Big En

  Alt 20. Mai 2005, 12:19
Wer mit so alten Delphiversionen arbeitet ist selber schuld, besondrs wenn er Unicodeverarbeitung machen will.
  Mit Zitat antworten Zitat
vt670

Registriert seit: 20. Mai 2005
24 Beiträge
 
#8

Re: "ANSI" zu "Unicode", zu "Big En

  Alt 20. Mai 2005, 18:54
Zitat von Robert Marquardt:
Wer mit so alten Delphiversionen arbeitet ist selber schuld, besondrs wenn er Unicodeverarbeitung machen will.
wer jeden update mitmacht und ewigkeiten damit verbringt die neuen bugs zu finden ebenfalls.

Soll ja auch leute geben die die ältere projekte betreuen
Es ist besser zu schweigen und als Idiot zu gelten als zu Reden und dadurch den Beweis anzutreten.
A. Lincoln
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: "ANSI" zu "Unicode", zu "Big En

  Alt 20. Mai 2005, 20:01
Zitat von vt670:
wer jeden update mitmacht und ewigkeiten damit verbringt die neuen bugs zu finden ebenfalls.
Stimmt, bin selbst noch bei D6

Zitat von vt670:
Soll ja auch leute geben die die ältere projekte betreuen
Betreuen ja - aber nicht sowas wie Unicode-Support einbauen.
Man sollte mindestens D3 besitzen um vernünftig mit Unicode arbeiten zu können. ElPack gab es in der 3.2er-Version noch für D3
Windows Vista - Eine neue Erfahrung in Fehlern.
  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 10:16 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