Page 1 sur 3

Numéro de canal libre pour ouverture d'un fichier [Résolu]

Publié : mar. 27/mars/2007 10:21
par Kwai chang caine
Bonjour à tous

J'ai vu cette instruction quelque part dans un code et pas moyen de la retrouver :?

Comment fait on pour obtenir un n° de canal libre pour l'ouverture d'un fichier.

Exemple :

Code : Tout sélectionner

CanalLibre = ?????

OpenFile(CanalLibre, Fichier$)
ReadFile(CanalLibre, Fichier$)    

.
.
.
Closefile(CanalLibre)
Merci et bonne journée

Publié : mar. 27/mars/2007 10:33
par Flype
1/ Méthode recommandée :

Code : Tout sélectionner

CanalLibre = Openfile(#PB_Any, Fichier$)
puis, par exemple, ReadString(CanalLibre)

2/ Sinon, j'ai jamais fait mais ca doit fonctionner :

Code : Tout sélectionner

Canal = 0

While IsFile(Canal) 
  Canal + 1
Wend

CanalLibre = Canal

Publié : mar. 27/mars/2007 10:52
par Kwai chang caine
Bonjour flype,

Je te remercie beaucoup . 8)

Comme tous les bons "Garde code", toujours à l'écoute et à la surveillance des petits navires en perdition sur l'océan purien..... :lol:

Bonne journée

Publié : mar. 27/mars/2007 11:00
par Kwai chang caine

Code : Tout sélectionner

CanalLibre = OpenFile(#PB_Any, "c:\Essais")
Debug CanalLibre
Je viens d'essayer et ça me retourne un grand nombre = 8199832 8O

Ce que je voulais c'est le nombre que normalement on ecrit à la place du #PB_Any.

Car si j'essaye :

Code : Tout sélectionner

OpenFile(8199832, "c:\Essais")
Debug CanalLibre
Il est pas content Mr Pure :x

Publié : mar. 27/mars/2007 11:11
par Backup
c'est normal, puisqu'en faisant #PB_Any
tu delegue a PureBasic la gestion du numero , donc t'a pas a t'en occuper !

tu a deux mode , soit tu utilise tes propre numero

Code : Tout sélectionner

 OpenFile(0, "Test.txt")    
  WriteStringN(0, "         This is a PureBasic file test")
  WriteString(0, "Now it's on ")
  WriteString(0, "the same line.")

  CloseFile(0)
soit tu fais confiance a PureBasic avec #PB_Any

Code : Tout sélectionner

 num=OpenFile(#PB_Any, "Test.txt")    
  WriteStringN(num, "         This is a PureBasic file test")
  WriteString(num, "Now it's on ")
  WriteString(num, "the same line.")

  CloseFile(num)

voila tous simple ! :D


ton

Code : Tout sélectionner

OpenFile(8199832, "c:\Essais")
Debug CanalLibre
ne peux pas marcher car entre de Run le #PB_Any
change !! il est remis a jour en temps reel !

Publié : mar. 27/mars/2007 11:38
par Kwai chang caine
Bonjour DOBRO

Content de te reparler :D

Ayai, je viens a peu pres de comprendre............ :roll:

En fait, j'ai toujours mis mes propres numéros, depuis le debut.
Mais comme j'ouvre un fichier dans une procedure que je risque de réutiliser dans un autre code, je voulais etre sur de ne pas utiliser un canal deja utilisé.

C'est dur a comprendre comment un chiffre par exemple "0" peut remplacer un "8199832" 8O

Il est drolement intelligent le pure :roll:

J'avais cru voir une fonction qui donnais directement le n° de canal, mais j'y pense c'est peut etre pour VB :oops:
Car je suis obligé d'en faire aussi un peu.

Encore grand merci au 2 grands garde-cote
Bonne journée

Publié : mar. 27/mars/2007 12:20
par Flype
ca n'a rien de compliqué ou de si intelligent. c'est très simple.

c'est juste toi qui te prend la tete comme d'hab. :lol:


[EDIT]
c'est pas méchant - tu me fais juste rire.

Publié : mar. 27/mars/2007 14:06
par Backup
Flype a écrit :ca n'a rien de compliqué ou de si intelligent. c'est très simple.

c'est juste toi qui te prend la tete comme d'hab. :lol:


[EDIT]
c'est pas méchant - tu me fais juste rire.
oouaip il est pas pres de sortir du temple le Kwai chang :D

Publié : mar. 27/mars/2007 14:06
par Kwai chang caine
Ouuuaih, on se refait pas, et surtout a mon age :(
Je crois que je trainerais ça toute ma vie......

Si un jour je me reincarne apres cette triste vie, je serais informaticien comme toi, avec noir de formule dans ma tete. :wink:

Et je parlerais tous les languages machine, et peut etre que ce jour la, je prendrais un petit navire sous mon aile, pour lui dire que c'est pas compliqué l'informatique. :lol:

Tu sais on a pas du tout la meme vue du haut d'un paquebot ou tu es que du bas d'une barque lorsque je regarde en me faisant peter 3 vertebres le pont du paquebot. :lol:

Vous aurez beau etre modeste,mon admiration pour vous n'en ai que plus grande. 8)

Des fois j'ai beau ramer, ramer, ramer mais j'en ai marre d'etre une barque

Je veux etre un paquebot
Je veux etre un paquebot
Je veux etre un paquebot
Je veux etre un paquebot
Je veux etre un paquebot
Je veux etre un paquebot
Je veux etre un paquebot
Je veux etre un paquebot
...................................

:lol:

Bonne croisiere....a vous deux

Publié : mar. 27/mars/2007 14:09
par brossden
Le code de Flype fonctionne trés bien j'ai ci dessous simplement mis son code dans un bout de soft pour le démontrer.

Tu peux mettre le ";" devant n'importe quelle ligne commençant par Openfile(....)

Code : Tout sélectionner


Procedure CanalLibre()
  Canal = 0
  While IsFile(Canal)
    Canal + 1
  Wend
  ProcedureReturn Canal
EndProcedure

OpenFile(0,"c:\toto$$0.$$$")
OpenFile(1,"c:\toto$$1.$$$")
OpenFile(2,"c:\toto$$2.$$$")
OpenFile(3,"c:\toto$$3.$$$")
;OpenFile(4,"c:\toto$$4.$$$")  << Ce Fichier n'est pas ouvert en canal 4 !
OpenFile(5,"c:\toto$$5.$$$")
OpenFile(6,"c:\toto$$6.$$$")

Canal  = CanalLibre()

MessageRequester("Numéro du premier Canal Libre", "Vous pouvez ouvrir le Canal : "+Str(Canal)+".  Il est disponible")

For n=0 To 6
  If n=Canal
    n+1
  EndIf
  CloseFile(n)
  File.s="c:\toto$$"+Str(n)+".$$$"
  DeleteFile(File)
Next 


Publié : mar. 27/mars/2007 14:53
par Kwai chang caine
Bonjour BROSSDEN

Effectivement ça marche nickel, comme ça on peut connaitre directement le n° du canal de libre.

Je confirme, pour tout à l'heure, ya une fonction en VB toute prete.
Et c'est la que je l'ai vu, et je me melange les pinceaux

Code : Tout sélectionner

Public Sub AjoutDonnee(strContent As String, strChemFich As String)
     Dim F As Integer

     F = FreeFile '1er numéro libre
     Open strChemFich For Append As #F 'ouvert en ajout
     Print #F, strContent ' écrit dans le fichier dont le numéro est F
     Close #F
End Sub
Pour une fois que VB fait quelque chose de plus simple :lol:
Une fois n'est pas coutume, il est bon de le souligner et de rendre a césar .....:lol:

Je te remercie beaucoup denis
Avec toutes ces aides la traversée de la manche a la rame parait moins longue :lol:

Bonne journée a tous

Publié : mar. 27/mars/2007 15:38
par Flype
Kwai chang caine a écrit :Je te remercie beaucoup denis
ah bon où çà :lol:

Publié : mar. 27/mars/2007 16:21
par Kwai chang caine
J'ai peut etre encore fait une bourde :oops:

Mais je croyais de mémoire que le prénom de BROSSDEN etait denis.

Si je me suis trompé, je lui fait toutes mes excuses. :oops:

Publié : mar. 27/mars/2007 17:39
par Flype
ah peut être - autant pour moi :D c'est juste que pour moi denis c'est denis...

Publié : mar. 27/mars/2007 23:24
par Frenchy Pilou
Je veux etre un paquebot
C'est pas si bien que cela un paquebot, cela pollue à mort! :x
Un simple voilier c'est bien mieux 8)
Image