Page 2 sur 3
Publié : mer. 08/août/2007 23:10
par Ollivier
A toi XXX XXXXX!
On ne peut pas tout le temps ouvrir un fichier même en lecture. ça dépend qui l'a ouvert et comment il est ouvert.
Publié : jeu. 09/août/2007 8:01
par Kwai chang caine
Ouh la la !!!! que de reponses
Merci les amis de vos aides nombreuses, cela me fait chaud au coeur
Ollivier a écrit :Tu sais Kcc, si tu ouvres ton fichier avec Notepad, et que tu lis avec PureBasic, n'oublie pas de
fermer Notepad... Mh?

Je laisse bien fermé le NOTEPAD, ce n'est pas ça qui gene, je suis sur.
Par contre lui il arrive a lire, je ne sais pas si c'est jusqu'au bout ?
Il ecrit noir de hieroglyphe (normal puisque c'est un format à la c..,mais au milieu y'a ce qui m'interesse en ASCII)
Mais y'a pas deplantage, il est fort ce NOTEPAD, hein ?
Ce que j'ai oublié de vous dire c'est que je peux le copier sans bleme
cpl.bator a écrit :j'ai zappé cela de ton post, ne me dis pas que tu essayes de lire un fichier avec une adresse internet
imagine le truc
Bombseb a écrit :quand tu dis sur un serveur protégé ca veux dire quoi exactement ?
le chemin du fichier commence par quoi "
http://leserveur" ou "\\leserveur" ?
Non non c'est sur un reseau interne, par l'explorateur, sur le serveur.
@CPL.BATOR
Je te remercie de ton code.
Je l'ai éssayé et il fait la meme erreur que le miens
à la ligne 23 = "ReadData(IdFichier,*Buffer, Size) "
File object not initialized
Et pourtant buffer remonte une adresse et size la taille du fichier.
Et comme dirais "jacques houille"
DIIIINGUEEEEE !!!
Publié : jeu. 09/août/2007 10:24
par Anonyme
Ollivier a écrit :mon petit père , A toi mon grand!

Publié : jeu. 09/août/2007 12:28
par gnozal
Kwai chang caine a écrit :Je te remercie de ton code.
Je l'ai éssayé et il fait la meme erreur que le miens
à la ligne 23 = "ReadData(IdFichier,*Buffer, Size) "
File object not initialized
Et pourtant buffer remonte une adresse et size la taille du fichier.
Et comme dirais "jacques houille"
DIIIINGUEEEEE !!!
Non, c'est normal
Si ReadFile() ne réussit pas, tu ne peux pas y accéder avec ReadData().
Il faut toujours vérifier le succès d'une fonction :
Code : Tout sélectionner
MonFichier = ReadFile(#PB_Any, "MonFichier")
If MonFichier
;
; Faire des trucs avec MonFichier
;
CloseFile(MonFichier)
Else
Debug "Marche pas ..."
EndIf
Quand à la raison du problème avec ReadFile(), c'est bien possible qu'il ne puisse pas ouvrir des fichiers déjà ouverts, s'il lui manque le flag #FILE_SHARE_READ.
Tu peux essayer de l'ouvrir via l'API Windows : regarde le fichier 'API-FileHandle.pbi' dans le répertoire 'Include' de jaPBe.
Publié : jeu. 09/août/2007 12:36
par Kwai chang caine
Bonjour GNOZAL
Je te remercie de ta reponse, mais je suis peut etre le seul encore au monde a utiliser l'IDE de PURE
J'essaierais d'installer Japbe pour voir ce qu'il y a dans ce "'API-FileHandle.pbi' "
Encore merci de ton aide

Publié : jeu. 09/août/2007 12:41
par gnozal
Voilà :
Code : Tout sélectionner
;info:Create and Read file with API
;Use PB-Memory
Structure API_FileHandle
FHandle.l
Buffer.l
BufferLen.l
ReadPos.l
DataInBuffer.l
readed.l
EndStructure
Procedure API_LOF(*File.API_FileHandle)
ProcedureReturn GetFileSize_(*File\FHandle,0)
EndProcedure
Procedure API_CloseFile(*File.API_FileHandle)
If *File\FHandle<>#INVALID_HANDLE_VALUE
CloseHandle_(*File\FHandle)
EndIf
If *File\Buffer
FreeMemory(*File\Buffer):*File\Buffer=0
EndIf
EndProcedure
Procedure API_FileReadEx(*File.API_FileHandle,File$,BufferLen)
*File\FHandle=CreateFile_(File$,#GENERIC_READ,#FILE_SHARE_READ,0,#OPEN_EXISTING,#FILE_ATTRIBUTE_NORMAL,0)
If *File\FHandle=#INVALID_HANDLE_VALUE
ProcedureReturn #False
Else
*File\BufferLen=BufferLen
*File\Buffer=AllocateMemory(*File\BufferLen)
*File\ReadPos=*File\Buffer
*File\DataInBuffer=0
ProcedureReturn #True
EndIf
EndProcedure
Procedure API_FileRead(*File.API_FileHandle,File$)
ProcedureReturn API_FileReadEX(*File,File$,1024*4)
EndProcedure
Procedure API_ReadData(*File.API_FileHandle,*Buffer,len)
result=0
If *File\DataInBuffer>=len
CopyMemory(*File\ReadPos,*Buffer,len)
*File\DataInBuffer-len
If *File\DataInBuffer
*File\ReadPos+len
Else
*File\ReadPos=*File\Buffer
EndIf
result=len
Else
If *File\DataInBuffer>0
CopyMemory(*File\ReadPos,*Buffer,*File\DataInBuffer)
*Buffer+*File\DataInBuffer
result=*File\DataInBuffer
len-*File\DataInBuffer
*File\DataInBuffer=0
*File\ReadPos=*File\Buffer
EndIf
If ReadFile_(*File\FHandle,*Buffer,len,@readed,0)<>0
result+readed
*File\readed+readed
EndIf
EndIf
ProcedureReturn result
EndProcedure
Procedure API_CurrentPos(*File.API_FileHandle)
ProcedureReturn *File\readed-*File\DataInBuffer
EndProcedure
Procedure API_ReadByte(*File.API_FileHandle)
If *File\DataInBuffer=0
If ReadFile_(*File\FHandle,*File\Buffer,*File\BufferLen,@readed,0)<>0
*File\readed+readed
*File\DataInBuffer=readed
*File\ReadPos=*File\Buffer
EndIf
EndIf
If *File\DataInBuffer
result=PeekB(*File\ReadPos) &$FF : *File\ReadPos+1:*File\DataInBuffer-1
Else
result=-1
EndIf
ProcedureReturn result
EndProcedure
Procedure API_PushBackByte(*File.API_FileHandle)
If *File\ReadPos>*File\Buffer
*File\ReadPos-1:*File\DataInBuffer+1
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure API_EOF(*File.API_FileHandle)
If API_ReadByte(*File)=-1
ProcedureReturn #True
Else
API_PushBackByte(*File)
ProcedureReturn #False
EndIf
EndProcedure
Procedure.s API_ReadString(*File.API_FileHandle)
a$=""
ende=#False
Repeat
byte=API_ReadByte(*File)
Select byte
Case 0:ende=#True
Case 10:ende=#True:byte=API_ReadByte(*File):If byte<>13 And byte<>10 And byte<>0 And byte<>-1: API_PushBackByte(*File) :EndIf
Case 13:ende=#True:byte=API_ReadByte(*File):If byte<>13 And byte<>10 And byte<>0 And byte<>-1: API_PushBackByte(*File) :EndIf
Case -1:ende=#True
Default
a$+Chr(byte)
EndSelect
Until ende
ProcedureReturn a$
EndProcedure
Procedure API_FileCreate(*File.API_FileHandle,File$)
*File\FHandle=CreateFile_(File$,#GENERIC_WRITE ,0,0,#CREATE_ALWAYS ,#FILE_ATTRIBUTE_NORMAL,0)
If *File\FHandle=#INVALID_HANDLE_VALUE
ProcedureReturn #False
Else
ProcedureReturn #True
EndIf
EndProcedure
Procedure API_WriteData(*File.API_FileHandle,*Buffer,len)
If WriteFile_(*File\FHandle,*Buffer,len,@written,0)
ProcedureReturn written
Else
ProcedureReturn 0
EndIf
EndProcedure
Procedure API_WriteString(*File.API_FileHandle,a$)
ProcedureReturn API_WriteData(*File,@a$,Len(a$))
EndProcedure
Procedure API_WriteStringN(*File.API_FileHandle,a$)
a$+Chr(13)+Chr(10)
ProcedureReturn API_WriteData(*File,@a$,Len(a$))
EndProcedure
Procedure API_Seek(*File.API_FileHandle,Pos,How)
#Seek_Begin=#file_begin
#Seek_Curent=#file_current
#seek_End=#file_end
result=SetFilePointer_(*File\FHandle,Pos,0,How)
If result<>-1
*File\DataInBuffer=0
*File\readed=result
EndIf
EndProcedure
; FHandle.API_FileHandle
; File$="Hallo.txt"
; random$=Str(Random(1000))
; Debug "random:"+random$
; If API_FileCreate(FHandle,File$)
; API_WriteString(FHandle,"Test ")
; API_WriteStringN(FHandle,"Hallo")
; API_WriteStringN(FHandle,"Zeile 2")
; API_WriteStringN(FHandle,"Zeile 3")
; API_WriteStringN(FHandle,random$)
; API_CloseFile(FHandle)
; EndIf
; Debug "---"
; If API_FileRead(FHandle,File$)
; While API_EOF(FHandle)=#False
; Debug API_ReadString(FHandle)
; Wend
; API_CloseFile(FHandle)
; EndIf
Publié : jeu. 09/août/2007 12:44
par Kwai chang caine
AAaaaahhh !!!
Tu es une mere pour moi
Je regarde .....non j'ai pas dit que j'ai compris, les miracles c'est à noel

, j'ai dit que je regarde et je te tiens au courant
Mille merci
Publié : jeu. 09/août/2007 12:57
par Kwai chang caine
Nadine !!!
J'suis "dégoutanisé of the life"
Encore une erreur à la ligne 25 qui retourne un false :
Code : Tout sélectionner
If *File\FHandle=#INVALID_HANDLE_VALUE
ProcedureReturn #False
Y commence à nous brouter les noyau ce fichier de serveur

Publié : jeu. 09/août/2007 21:54
par Flype
une idée serait de savoir quelle erreur est renvoyée par l'OS avec GetLastError_().
Code : Tout sélectionner
Macro LastErrorMessageRequester()
MessageRequester("LastError", Left(LastErrorMessage.s{4096}, FormatMessage_(#FORMAT_MESSAGE_FROM_SYSTEM, 0, GetLastError_(), 0, @LastErrorMessage, 4095, 0) - 2), #MB_ICONERROR)
EndMacro
distant$ = "\\monserveur\mondossier\monfichier.txt"
fichier$ = GetTemporaryDirectory() + "monfichier.txt"
If CopyFile(distant$, fichier$)
If OpenFile(0, fichier$)
MessageRequester("Information", "Fichier ouvert")
CloseFile(0)
Else
LastErrorMessageRequester()
EndIf
If Not DeleteFile(fichier$)
LastErrorMessageRequester()
EndIf
Else
LastErrorMessageRequester()
EndIf
Publié : jeu. 16/août/2007 2:45
par Kwai chang caine
J'suis en vacance et donc plus avec le fameux fichier qui me cause "boucou du soucis", je jeterais un "zieu" dans 10 jours.
Merci FLYPE
Publié : ven. 17/août/2007 19:47
par Ollivier
Et ben... Y'en a qu'ont de la chance...
Publié : ven. 17/août/2007 20:10
par Kwai chang caine
Mefiance Ollivier, les apparences sont parfois trompeuses....
J'echange sans reflechir mes vacances contre mon boulot.
Au boulot, c'est PC et prog (Enfin pour l'instant)
En vacances, c'est beton, moellon, perfo, etc ..... et tout ça presque tous les jours, et cela depuis pres de 16 ans
Vivement le boulot que je me repose

Publié : ven. 17/août/2007 20:23
par Ollivier
Moi c'est boulot, boulot, boulot, vacances=stage, boulot, boulot...
La prog est une passion.
Publié : ven. 17/août/2007 23:23
par Flype
Bah moi je programme à donf depuis 3 ans en entreprise.
C'est aussi une passion pour moi, c'est ce qui me fait tenir...
mais vu le rythme, sans vacances, je pèterais un fusible.
Publié : ven. 17/août/2007 23:34
par Ollivier
La seule différence fondamentale par rapport à vous, c'est que ma deuxième passion c'est la plongée sous-marine. Je suis en vacances tous les soirs de l'année...
Mais le rapport condition de vie/gain de vie n'est pas le même.