scanf und AnsiString
-
Was haste denn wo genau drinstehen???
Was willste denn ganz genau machen???
Was soll AnsiString id[20] darstellen??? - 20 Ansistring- Variablen?
PS:
char Text[20];
AnsiString AS="jhfkl-";
strcncpy(AS.c_str(),Text);//macht aus AnsiString ein char- Vektor und kopiert den!
-
DerAltenburger schrieb:
Was haste denn wo genau drinstehen???
Was willste denn ganz genau machen???
Was soll AnsiString id[20] darstellen??? - 20 Ansistring- Variablen?
PS:
char Text[20];
AnsiString AS="jhfkl-";
strcncpy(AS.c_str(),Text);//macht aus AnsiString ein char- Vektor und kopiert den!AnsiString id[20];
long hex_id;Also, ich gebe über Edit eine Hexzahl ein, die ich anschließend mit
sscanf in eine Long variable schreiben möchte.
Ich bekomme mit id[0] = Edit1->Text einen AnsiString den ich
mit sscanf(id,"%8x",&hex_id) nicht benutzen kann. (Cannot convert AnsiString to const char*)
Ich müsste den AnsiString in einen char string convertieren.
Ich möchte aus einem AnsiString "10AFF3A" mit scanf einen Long Wert = 0x10AFF3A
machen.
-
Ich benutze bei sowas:
long bla = IntToStr("0x" + blabla->text); und das funktioniert
-
probier mal:
sscanf(id[0].c_str(),"%8x",&hex_id);
-
GhostBuster schrieb:
Ich benutze bei sowas:
long bla = IntToStr("0x" + blabla->text); und das funktioniert
long hex_id;
hex_id = IntToStr("0x" + Edit1->Text);
Ergibt die Fehlermeldung "Cannot convert System::AnsiString to int"
Ich möchte ja auch keinen long Wert in einen String wandeln, sondern
umgekehrt.
-
oh sorry, ich meine StrToInt, nicht IntToStr. Sorry
-
GhostBuster schrieb:
oh sorry, ich meine StrToInt, nicht IntToStr. Sorry
super,
long hex_id;
hex_id = StrToInt(Edit1->Text);
funkt, habe nur noch ein Problem, gebe ich in Edit 100 ein, sollte
in hex_id 0x100 stehen, es steht aber 0x64 drin.Wo finde ich infos zu StrToInt und IntToStr, in meiner Borland Hilfe
taucht soetwas nicht auf.Vielen Dank
-
Ja, 100 ist in hex 0x64
-
GhostBuster schrieb:
Ja, 100 ist in hex 0x64
Das ist mir klar, ich möchte aber eine Hex Zahl eingeben z.B. A3F7 und
die soll anschliessend in hex_id genauso drinstehen.
hex_id = 0xA3F7.char blah[10] = "ACD";
long hex_id;
sscanf(blah,"%3x",&hex_id);
Funktioniert, es steht anschliessend 0xACD in hex_id, es get aber nicht
wenn blah ein AnsiString ist, den ich bei Edit ja nun mal bekomme.
Gibt es nicht soetwas wie AnsiString nach char?
-
hermes schrieb:
GhostBuster schrieb:
Ja, 100 ist in hex 0x64
Das ist mir klar, ich möchte aber eine Hex Zahl eingeben z.B. A3F7 und
die soll anschliessend in hex_id genauso drinstehen.
hex_id = 0xA3F7.char blah[10] = "ACD";
long hex_id;
sscanf(blah,"%3x",&hex_id);
Funktioniert, es steht anschliessend 0xACD in hex_id, es get aber nicht
wenn blah ein AnsiString ist, den ich bei Edit ja nun mal bekomme.
Gibt es nicht soetwas wie AnsiString nach char?Folgendes Funktioniert endlich
sscanf(Edit1->Text.c_str(),"%8x",&hex_id);
Vielen DankGenauso habe ich mir das vorgestellt,
void __fastcall TForm1::Edit1Exit(TObject *Sender) { unsigned char id[4]; sscanf(Edit1->Text.c_str(),"%8x",&id); }
Im buffer id steht nun meine Hexzahl als Bytes, da ich einen Can-Bus Monitor
Programmieren möchte sende ich nun jedes einzelne Byte an ein Controllerboard,
der das ganze dann als 28bit ID auf den Can-Bus sendet.
-
Um Himmels willen!!! Im Falle von DerAltenburgers Ratschlag trifft das alte Sprichwort "Der schlimmste Schlag ist der Ratschlag" präzise zu!
wer wissen will wieso sollte mal in der FAQ alles zum Thema c_str() lesen... und auch hier: http://www.c-plusplus.net/forum/viewtopic.php?t=69651&postdays=0&postorder=asc&start=0
-junix