AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Wie lese ich aus einem String ASCII (Unicode) Werte?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie lese ich aus einem String ASCII (Unicode) Werte?

Ein Thema von qb-tim · begonnen am 2. Jun 2007 · letzter Beitrag vom 2. Jun 2007
Antwort Antwort
Benutzerbild von qb-tim
qb-tim

Registriert seit: 3. Mär 2006
Ort: Deutschland
280 Beiträge
 
Delphi 6 Professional
 
#1

Wie lese ich aus einem String ASCII (Unicode) Werte?

  Alt 2. Jun 2007, 10:16
Hi,

meine Frage kommt von diesem ( http://www.delphipraxis.net/internal...078&highlight= ) Beitrag. Meine Frage ist ganz einfach:

Zitat von qb-tim:
Wie lese ich aus einem String die ASCII-Werte (Unicode) in Form von Integers aus?
z.Bsp: String := 'Z' => Integer := 090
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: Wie lese ich aus einem String ASCII (Unicode) Werte?

  Alt 2. Jun 2007, 10:23
Hallo,

aus einem (Ansi-)String kannst Du erst einmal keine Unicode-Werte auslesen, die Zeichen sind nämlich (normalerweise) 8 Bit lang. Wenn Du den Ordinalwert eines Zeichens haben willst, nimmst Du die Funktion Delphi-Referenz durchsuchenOrd:
Delphi-Quellcode:
S := 'ZA';
I := Ord(S[1]); // I = 90;
I := Ord(S[2]); // I = 65;
Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von qb-tim
qb-tim

Registriert seit: 3. Mär 2006
Ort: Deutschland
280 Beiträge
 
Delphi 6 Professional
 
#3

Re: Wie lese ich aus einem String ASCII (Unicode) Werte?

  Alt 2. Jun 2007, 10:27
Hmm... Ich habe aber eine Unicode Datei aus der ich die Daten auslese und ich will dann die Unicode ASCII Werte erhalten...

Muss ich da etwas anderes als Strings verwenden? (Ich benutzte nur Zeichen mit den Werten 100 bis 199)
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Wie lese ich aus einem String ASCII (Unicode) Werte?

  Alt 2. Jun 2007, 10:28
Was ist denn ein Unicode-ASCII-Wert?
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von qb-tim
qb-tim

Registriert seit: 3. Mär 2006
Ort: Deutschland
280 Beiträge
 
Delphi 6 Professional
 
#5

Re: Wie lese ich aus einem String ASCII (Unicode) Werte?

  Alt 2. Jun 2007, 10:33
Meine Datei erstelle ich mit Hilfe eines kleines Tricks in Windows...

Um z.Bsp ein großes Z darzustellen kann ich ALT + 9 , 0 drücken und es erscheint im TestEditor ein großes Z.

Als ich meine Datei speichern wollte hat Windows mich gewarnt, dass ANSI nicht alle Zeichen im Text richtig speichern konnte also musste ich auf Unicode umschalten.

Zitat:
Unicode = Multibye-Zeichensatz, welcher versucht alle bekannten Zeichen darzustellen.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Wie lese ich aus einem String ASCII (Unicode) Werte?

  Alt 2. Jun 2007, 10:45
Ich weiß, was Unicode ist. Unicode ist ein Zeichensatz, der mehrere Bytes pro Zeichen verwendet.
Ich weiß aber auch, was ASCII ist: Ein 7-Bit-Zeichensatz, bei dem das 8. Bit immer 0 ist.

Ein Unicode-ASCII-Wert ist also ein Widerspruch in sich.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#7

Re: Wie lese ich aus einem String ASCII (Unicode) Werte?

  Alt 2. Jun 2007, 10:45
Hallo,

erst mal: Unicode-ASCII gibt es nicht. Entweder oder (wobei die ersten 128 Zeichen von Unicode den ASCII-Zeichen entsprechen). Wenn Du nur Zeichenwerte bis einschließlich 255 verwendest, dann bist Du mit ANSI eigentlich auf der sicheren Seite, da 8 Bit = 256 Werte. Das Problem könnte sein, dass ANSI in diesem Zusammenhang ein etwas schwammiger Begriff ist. Wie ich gerade bemerkt habe, speichert der Windows-Editor solche Dateien tatsächlich etwas komisch, d. h. er verändert Zeichen. Es könnte also sein, dass Du tatsächlich auf Unicode umsteigen musst. Hierfür stellt Delphi den Typ WideString zur Verfügung, bei dem jedes Zeichen auf zwei Byte besteht.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von qb-tim
qb-tim

Registriert seit: 3. Mär 2006
Ort: Deutschland
280 Beiträge
 
Delphi 6 Professional
 
#8

Re: Wie lese ich aus einem String ASCII (Unicode) Werte?

  Alt 2. Jun 2007, 10:47
Heißt das, dass ich jetzt einfach nur die Datei in WideStrings einlesen soll und von da aus weiterarbeiten muss?
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#9

Re: Wie lese ich aus einem String ASCII (Unicode) Werte?

  Alt 2. Jun 2007, 10:50
Hallo,

genau. Du musst aber darauf achten, dass die meisten Komponenten der VCL nicht mit WideStrings umgehen können. Z. B. kannst Du die Datei nicht mit einer TStringList einlesen, da diese nur AnsiStrings unterstützt.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Wie lese ich aus einem String ASCII (Unicode) Werte?

  Alt 2. Jun 2007, 11:32
Mit nem FileStream und nem WideString als Puffer ist das natürlich kein Problem:

Delphi-Quellcode:
var str: WideString
    fs: TFileStream;
//...
setlength(str, fs.size shr 1);
fs.read(str[1], fs.size);
//...
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  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 04:38 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