Bonjour Roland,
if (!ReadFile(pLP->hDatei, pLP->pPuffer + pLP->AnzInhalt, pLP->Groesse - pLP->AnzInhalt, &AnzGelesen, NULL))
Si je comprends bien cette ligne et le fichier, il s'agit dans le second argument d'une addition d'un pointeur sur un CHAR (pLP->pPuffer) et d'un entier (pLP->AnzInhalt).
Sinon la fonction ReadFile vient de la bibliothèque windows.h et son second argument doit être un pointeur sur un buffer récoltant les données du fichier à lire.
Donc, si j'ai bien compris, pLP->pPuffer + pLP->AnzInhalt semblerait correspondre à la position -pointée- pLP->AnzInhalt dans la chaîne de caractères pLP->pPuffer .
Le code (en Pascal) @pLP.pPuffer[pLP.AnzInhalt] pourrait alors peut-être convenir ?
Je viens de tester ta solution (pLP.pPuffer + pLP.AnzInhalt)^ par un petit programme plus simple sur des ^char (et de même avec des PAnsiChar) a et b :
b:=@a[2] fonctionne.
b:=a+2 fonctionne et fait la même chose (Ce qui est contradictoire avec la tentative infructueuse pLP.pPuffer + pLP.AnzInhalt ).
b:=(a+2)^ ne fonctionne pas, contrairement à ta dernière solution
(idem pour les 3 tests si je remplace 2 par un LongWord)
Et je ne comprends pas ces différences ... (ou j'ai dû mal comprendre le programme original en C ).
Partager