Page 1 sur 1

Problème d'initialisation de code pour lire un fichier

Publié : dim. 26/nov./2017 16:19
par selzig
Bonjour,

sous OS X avec PureBasic 5.6.1 ce code fonctionne dans une procédure :

Code : Tout sélectionner

If ReadFile(0, FileAndPathName.s)
  TailleInit.l = Lof(0) 
EndIf
Mais ce code-là ne fonctionne pas.

Code : Tout sélectionner

FileID.l = ReadFile(#PB_Any, FileAndPathName.s) 
Debug FileID.l
If FileID.l
   TailleInit.l = Lof(FileID.l)  ;ligne générant l'erreur
EndIf
Debug >>7775240
[15:53:26] Waiting for executable to start...
[15:53:26] Executable type: MacOSX - x64 (64bit, Unicode)
[15:53:26] Executable started.
[15:55:25] [ERROR] The specified #File is not initialised.
[15:55:46] The Program was killed.

Merci de vos lumières. Cordialement. Gilles

Re: Problème d'initialisation de code pour lire un fichier

Publié : dim. 26/nov./2017 16:42
par Zorro
tu compiles en 64 bits ? si c'est le cas, alors c'est peut etre bien normal :)
voir Doc , la difference entre un .l (.L) et un .I (.i)

Re: Problème d'initialisation de code pour lire un fichier

Publié : dim. 26/nov./2017 16:57
par selzig
Merci.
C'était effectivement le problème.
Cordialement. Gilles

Re: Problème d'initialisation de code pour lire un fichier

Publié : dim. 26/nov./2017 17:08
par falsam
Quand le typage d'une variable est défini, il est inutile de le préciser dans la suite du code

Code : Tout sélectionner

FileID.l = ReadFile(#PB_Any, FileAndPathName.s) 
Debug FileID
If FileID
   TailleInit = Lof(FileID)  ;ligne générant l'erreur
EndIf
Proprement le code devrait se présenter de cette manière.

Code : Tout sélectionner

Define FileID.l, FileAndPathName.s

FileID = ReadFile(#PB_Any, FileAndPathName) 
Debug FileID
If FileID
   TailleInit = Lof(FileID)  ;ligne générant l'erreur
EndIf

Re: Problème d'initialisation de code pour lire un fichier

Publié : dim. 26/nov./2017 18:53
par Zorro
Perso , je prefere garder le type d'une variable
tout le long du code

donc une variable : FileID.i
gardera son type dans tout mon code !!

car definir le type au debut d'un code de 8000 ou 20000 lignes c'est
pas vraiment le top , car lorsque tu tombes 2 ans plus tard sur la variable "FileID" tu sais plus vraiment quel type elle a

alors que si tu vois "FileID.l" c'est clair :)

c'est pour ça que je n'utilise jamais le Define .....
je prefere voir le type dans le nom de la variable .. :)

donc :

Code : Tout sélectionner

FileID.i = ReadFile(#PB_Any, FileAndPathName.s)
Debug FileID.i
If FileID.i
   TailleInit = Lof(FileID.i) 
EndIf