NSString et fin de chaà®ne
Rocou
Membre
J'essaie d'afficher un NSString de la façon suivante:
NSString *machaine=@toto;
NSLog(@cette chaine %@ est bien curieuse", machaine);
A l'exécution j'obtiens:
cette chaine toto
le reste ("est bien curieuse") n'apparaà®t pas. y aurait-il un caractère parasite en fin de chaà®ne 'machaine'?
Pour info, machaine n'est pas initalisé comme ci-dessus (c'est pour ne pas surcharger ma question).
Voici le code:
//bout de code
[popClient removeAllItems]; //popClient est un NSPopupButton
NSString *query = @SELECT clients.nom FROM clients ORDER BY clients.nom;
NSDictionary *leDico;
PGSQLRecordset *rs = [connection open:query];
if (rs != nil) {
if (![rs isEOF])
{
NSInteger i=0;
while (![rs isEOF])
{
leDico=[rs dictionaryFromRecord];
[popClient insertItemWithTitle:[leDico valueForKey:@nom] atIndex:i];
i=i++;
[rs moveNext];
}
}
}
//Autre bout de code
NSMenuItem *litem = [popClient selectedItem];
NSString * machaine =[litem title];
NSLog(@cette chaine %@ est bien curieuse", machaine);
NSString *machaine=@toto;
NSLog(@cette chaine %@ est bien curieuse", machaine);
A l'exécution j'obtiens:
cette chaine toto
le reste ("est bien curieuse") n'apparaà®t pas. y aurait-il un caractère parasite en fin de chaà®ne 'machaine'?
Pour info, machaine n'est pas initalisé comme ci-dessus (c'est pour ne pas surcharger ma question).
Voici le code:
//bout de code
[popClient removeAllItems]; //popClient est un NSPopupButton
NSString *query = @SELECT clients.nom FROM clients ORDER BY clients.nom;
NSDictionary *leDico;
PGSQLRecordset *rs = [connection open:query];
if (rs != nil) {
if (![rs isEOF])
{
NSInteger i=0;
while (![rs isEOF])
{
leDico=[rs dictionaryFromRecord];
[popClient insertItemWithTitle:[leDico valueForKey:@nom] atIndex:i];
i=i++;
[rs moveNext];
}
}
}
//Autre bout de code
NSMenuItem *litem = [popClient selectedItem];
NSString * machaine =[litem title];
NSLog(@cette chaine %@ est bien curieuse", machaine);
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
fprintf(stderr,"\n");
for(NSUInteger i=0;i<[machaine length];i++)
  fprintf(stderr,":%d %c:",[machaine characterAtIndex:i],[machaine characterAtIndex:i]);
fprintf(stderr,"\n");
Je viens de tester (merci pour le code tout fait 8--) )
Dans machaine il devrait y avoir "Alice"
Voici ce que j'obtiens avec ton code: (ce qui est fabuleux, c'est que tout ce que j'écris dans CE message après mon copier-coller du résultat disparaà®t! En outre après le zéro il y a deux point ":" qui s'obstinent à disparaitre dés que je publie le message...
:65 A::108 l::105 i::99 c::101 e::0
A la saisie il n'est pas éliminé comme il le devrait, il faut donc éliminer ce dernier caractère.
Génial! Un grand merci.
Je ne sais pas, par contre pourquoi ma chaà®ne contient cet '\0'
J'ai ma réponse: ma version du framework était buggée. Je l'ai mise à jour et tout roule.
D'autres bugs ont été corrigés et notamment un gros problème avec la méthode isEOF de la classe PGSQLRecordset.