Bjarne skriver i sin forkyndelse: for(;;) { char *p = va_arg(ap, char*); if (p == 0) break; cerr <<< p << ' '; } Hvilket ligner hvad du skriver temlig meget.
Du skulle vel ikke køre en MS compiler til 64 bit?
Jeg har ikke før set AnsiString så vil ikke ligge hovedet på blokken, men vil tro at dit problem ligger i at de ligesom arrays af chars ender på null. Dvs "" har ingen elementer og derfor er der 0 element null.
Men kan ikke lige sige, hvordan det kan løses. Måske ved at sende antallet af elementer i stedet for en "stopklods"
while ( ( cArg = va_arg( ap, char* ) ) != 0x00 ) skal ændres til while ( ( cArg = va_arg( ap, char* ) ) != (char *)0x00 )
men hvorfor kan jeg ikke rigtigt fortælle, cArg er en char *, den sammenlignes med en char(0x00), også ok da en af dem ville blive type cast til den andens type, men her sker der noget underligt. cArg bliver åbenbart checket om det den peger på er NULL og ikke om den selv er NULL ... for med optionen "merge duplicate strings" til peger den på 0x00000000, men med den på off peger den på en 0x00xxxxxx, hvor xxx er det der tilfældigvis står efter.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.