AnsiString und Ascii
-
Hallo,
ich habe ein char-Array
[unsigned char v_buf[4];]
lese darin Zeichen ein und möchte nun z.B. wenn ich vier Zeichen drin habe, diese als Ascii-Zeichen in ein AnsiString umschreiben. Der AnsiString soll also vier Ascii-Zeichen beinhalten.
Tschö mit ö
-
wieso nimmst du ein unsigned char?
machs doch so:
char v_buf[4]; strcpy(v_buf,"abcd"); AnsiString str = v_buf;
-
Hallo
Vorsicht
(char v_buf[4])char v_buf[4]; strcpy(v_buf,"abcd"); AnsiString str = v_buf;
MfG
Klaus
-
KlausB:
Du wolltest v_buf[5] schreiben, oder?
-
Janzen:
du meinst Jester2000 nicht KalusB, oder..
-
Naja, implizit meine ich alle, die v_buf[4] geschrieben haben.
Konkret aber KlausB, weil ich vermute(te), dass er auf genau diesen Fehler hinweisen wollte. Ansonsten würde sein Beitrag ja keinen rechten Sinn ergeben.
-
ups, türlich muss da ne 5 stehen, mein fehler
-
Hallo,
ich bin nicht ganz zufrieden mit dieser Lösung, ich habe es jetzt so gemacht:
[
unsigned char v_read_buf[80]; //muss größer sein
char p[4];p[0] = v_read_buf[2]; //wird deshalb um gespeichert
p[1] = v_read_buf[3];
p[2] = v_read_buf[4];
p[3] = v_read_buf[5];
AnsiString filename = p;
]Ich habe das Problem, das ich immer noch ein Zeichen dazu bekomme, zu den 4 die ich eigentlich will zudem: filename wird im Zusammenhang mit einem SaveDialog benutzt und oft (zu 90%) wird dieser Dialog einfach nicht geöffnet, was wenn ich den Namen fest vorgebe nie passiert.
Könnt ihr mir weiterhelfen?Gruß ansi
-
hi,
es muss natürlich char p[5] heissen, kleiner Fehler,
hab aber jetzt ne anständige Lösung gefunden:[
p[0] = v_read_buf[2];
p[1] = v_read_buf[3];
p[2] = v_read_buf[4];
p[3] = v_read_buf[5];
p[4] = 0x00;
filename=p;
]0x00 muss sein sonst steht im AnsiString ein riesenflunz.
Danke trotzdem.Gruß Ansi
-
Hallo,
Wie oben schon erwähnt, ist dein Puffer um 1 zu klein. Mit deiner Grösse bekommst du ja nicht die abschliessende 0 hinein, so das dein String nicht terminiert ist. Woher soll Ansistring denn wissen wo dein String zuende ist.
Also: Feldgrösse auf 5 erhöhen und an die letzte Position eine 0 schreiben ('\0').
[edit]Da war ich wohl zu langsam[/Edit]Ciao