char nach ansistring

Tasm-Devil

Erfahrenes Mitglied
Leute ich muss mich schon fast schämen dass ich diese Frage stellen muss.
Ich arbeite zwar schon seit einigen Jahren mit c++ und hab auch schon diverse programmieraufträge erfolgreich ausgeführ ABER ich bin so schlecht wenn es um strings und chars und Zeiger geht.

Kann mir einer helfen. Ich möchte einen char strin in einen Ansistring konvertiren.
hier der code schnipsel:
Code:
 char ID [9];
 ltoa (id,ID,10);
 char SERIAL[9];
 itoa (Serial,SERIAL,10);
 char RESULT1[18];
   for (int i=0;i<9;i++)
   {
   RESULT1[i*2] = ID[i];
   RESULT1[i*2+1] = SERIAL[i];
   }
 AnsiString Result1;
 strncpy (Result1.c_str(),RESULT1,18); //geht nicht

wenn einer weiter weiß oder mich auslachen möchte, dann bitte. :-)
 
Wenn dein String nullterminiert wäre, dann könntest du einfach schreiben:

Code:
Result1 = RESULT1;

da es nicht sicher so ist gibt es zwei Möglichkeiten:

1. Den char* 1 länger machen und das letzte Zeichen auf 0 setzen:
Code:
..
char RESULT1[19];
RESULT[18] = 0x0;
..
Result1 = RESULT1;

2. Die Länge des AnsiStrings festlegen und Zeichen für Zeichen kopieren
Code:
Result1.SetLength( 18 );

for( int i = 0; i < 18; i++ )
{
  Result1[ i + 1 ] = RESULT1[ i ];
}

Greets
BadMourning
 
Ich schäme mich aber du wirst es nicht glauben Result1 = RESULT1; funktioniert wirklich.

Die einfachste Möglichkeit hab ich nicht in betracht gezogen.

GOTT BIN ICH BLÖD

OK bitte dieses Thema schließen :-)
 
Code:
strncpy (Result1.c_str(),RESULT1,18); //geht nicht

Afaik legt "c_str()" ein temporäres Chararray an -> dein Result würde dann in dieses temporäre Array kopiert werden aber nicht in den eigentlichen String.

Aus dem c_str() lässt sich schließen, das du mit dem Borland C++ Builder schaffst, richtig? Dafür gibts hier ein extra Forum.
 
Zurück