Probleme de syntaxe dans boucle while (problemes de pointeurs)

Résolu
Signaler
Messages postés
9
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
13 avril 2006
-
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Bonjour,

J aimerais savoir ce qui cloche dans la syntaxe ci-dessous. Je recois 5 erreurs provenant de la ligne commencant par while.
J ai essaye de joindre une capture d écran pour vous montrer les erreurs, mais je n ai pas trouver le moyen de joindre l image.
Si vous en avez besoin dites moi seulement comment insérer ma capture d'ecran.
Merci de votre aide.

Char *buffer,prefixString;
Int i=0;

buffer = (PCHAR)LocalAlloc(LMEM_FIXED, FileSize+1);
prefixString = (PCHAR)LocalAlloc(LMEM_FIXED, 20);
while( ( buffer[i] == '\' ) && ( buffer[i+1] == '1' ) )
{
prefixString[i]=buffer[i+2];
i++;
}
prefixString[i]='\0';

SetDlgItemText(hwnd,IDC_EDIT_PREFIX,prefixString);
SetDlgItemText(hwnd,IDC_EDIT_DEPTHLIST,buffer);
LocalFree(buffer);
LocalFree(prefixString);

5 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
SetWindowText(hedit, prefixString);

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Messages postés
9
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
13 avril 2006

[auteurdetail.aspx?ID=198568 ]

PS: desole c est le meme message avecune faute en moins (prefixString est également un pointeur vers char)

Bonjour,
J aimerais savoir ce qui cloche dans la syntaxe ci-dessous. Je recois 5 erreurs provenant de la ligne commencant par while.
J ai essaye de joindre une capture d écran pour vous montrer les erreurs, mais je n ai pas trouver le moyen de joindre l image.
Si vous en avez besoin dites moi seulement comment insérer ma capture d'ecran.
Merci de votre aide.

Char *buffer,*prefixString;
Int i=0;

buffer = (PCHAR)LocalAlloc(LMEM_FIXED, FileSize+1);
prefixString = (PCHAR)LocalAlloc(LMEM_FIXED, 20);
while( ( buffer[i] == '\' ) && ( buffer[i+1] == '1' ) )
{
prefixString[i]=buffer[i+2];
i++;
}
prefixString[i]='\0';

SetDlgItemText(hwnd,IDC_EDIT_PREFIX,prefixString);
SetDlgItemText(hwnd,IDC_EDIT_DEPTHLIST,buffer);
LocalFree(buffer);
LocalFree(prefixString);
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
"Char" avec une majuscule ???

'\\' doit être doublé, c'est un caractère d'échappement.

LocalAlloc est issu du 16 bits, à remplacer par VirtualAlloc ou HeapAlloc.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Autre chose, dans une situation telle que celle ci, inotile de faire tourner le memory manager inutilement:

#define MEMDISPO (MEM_RESERVE | MEM_COMMIT | MEM_TOP_DOWN)

prefix = VirtualAlloc(0, FileSize+1 + 20, MEMDISPO, PAGE_READWRITE);
buffer = prefix + 20; // TOUT EN 1 SEULE ALLOC

Al a fin, juste un VirtualFree sur prefix, double benef.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Messages postés
9
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
13 avril 2006

Merci beaucoup de ton aide.
Je me galere un peu avec win32...ah quand on veut faire ses propres interfaces!

En meme temps, j ai un autre probleme de taille. Sur un programme C/C++ sans MFC, j utilise d'habitude printf pour cibler mes erreurs.
Est ec que tu aurais un equivalent sur win32?

Dans cet exemple, je n'arrive pas a afficher dans une edit box ma chaine prefixString, qui est censee etre egale a buffer tant que buffer ne lit pas la chaine "\1". J'aimerais donc affcher (via l'equivalent d un printf ) quelquechose me premettant de cibler mon erreur.

Merci encore de ta patience!