Il est vrai que le retour de cette fonction n'est pas documenté, j'ai simplement interpolé en comparant cette fonction avec celle qui existe en C (et qui renvoie le déplacement).
Il y a eu une correction de cette fonction dans la R5 mais elle ne semble pas porter sur le retour de la fonction.
Cette fonction renvoie toujours 0 ce qui est effectivement bien dommage.
Par contre, le résultat de ton code ne montre pas que la fonction fseek est buguée.
La fonction ftemp() crée un fichier temporaire (en mémoire) vide.
Tes écriture successives positionne le pointeur du fichier à la fin du fichier.
L'appel de fseek avec une valeur de déplacement positive va chercher à positionné le pointeur au delà de la fin du fichier, ce qui n'est pas possible, il est donc normal que la fonction te renvoie 0 car le déplacement du pointeur de fichier n'a pas été fait.
Voici par exemple le bout de script qu'il faut écrire pour montrer que ça ne fonctionne pas :
new pos;
new Toto[1+1];
new File:filetmp = ftemp ();
fwrite(filetmp, "012345678901234567890\r\ntesttest\r\n");
fwrite(filetmp, "test\r\n");
fwrite(filetmp, "test\r\n");
pos = fseek (filetmp, 7, seek_start);
printf("Position du pointeur: %d", pos);
fread (filetmp, Toto[0], 2);
printf ("Toto = %s", Toto);
fclose(filetmp);
Resultat :
[17:44:19] Position du pointeur: 0
[17:44:19] Toto = 7
La valeur de pos est 0 alors qu'elle devrait être de 7.
Mais le fichier est lu correctement, ce qui indique que fseek rempli sa fonction.
++
Syg