VCL - Konsole - String/Char Konflikt
-
Hi!
ich habe folgenden Code:
int main(int argc, char* argv[]) { String a = String(char(255)) + String(char(250)) + String(char(128)); //String a = String(char(255) + char(250) + char(128)); //Ergibt totalen Mist! for (int i=1; i<=a.Length(); i++) puts(IntToStr(a[i]).c_str()); for (;;); return 0; }
Warum kommt bei der Ausgabe in diesem Code folgendes?
-1 -6 -128
Wie kann man das korrigieren OHNE die String wegfallen lassen zu müssen (also alles mit chars)?
Danke im voraus
Eich
-
AnsiString('a') == AnsiString("a")
-
Du arbeitest mit CHARS!!!
-128 .. +127, das ist also normal!!! Du must richtige Typen nehmen / anpasse!
mach:for (int i=1; i<=a.Length(); i++) { unsigned char z; z=(a[i]); AS=IntToStr(z); puts(IntToStr(z).c_str()); }
Dann sollte das gehen
-
@Der Altenburger: Ich glaube, du hast da was nicht ganz verstanden.
-
Das denk ich nicht!
-
Na, dann werd ich dir wohl mal was erklären müssen.
String a = String(char(255)) + String(char(250)) + String(char(128));
Danach ist a == "ÿú€". Und jetzt überleg dir mal, was IntToStr(a[1]) ausgibt...
-
OK, hab grad gemerkt, dass ich nicht verstanden habe, was ProfEich machen will.
@ProfEich: Es wäre sinnvoll, wenn du das in Zukunft angibst.
-
Original erstellt von WebFritzi:
**```cpp
String a = String(char(255)) + String(char(250)) + String(char(128));Danach ist a == "ÿú€". Und jetzt überleg dir mal, was IntToStr(a[1]) ausgibt...**
Eben, in a sind die Zeichen der drei ASCII- Codes hintereinander als Text!
Und er will die Code- Werte (so wie er sie eingegeben hat!) als Text jeweils ausgeben!
Der String dient als char- Array fuer Zahlenwerte (0..255)!
Und IntToStr betrachtet die Char- Werte als signed!
Ups, zu langsam!
[ Dieser Beitrag wurde am 05.04.2003 um 20:58 Uhr von DerAltenburger editiert. ]