IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

I/O error 104


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 98
    Par défaut I/O error 104
    Yop
    je vous fais part de mon code tout d'abord :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    procedure GetLinks;
    var
    l : integer;
      SomeTxtFile : TextFile;
      buffer , buffer1, StringFirst , StringSecond , lien , lien1 : string;
    begin
      AssignFile(SomeTxtFile,'C:\fichier.rtf') ;
      //showmessage('Assigned file');
      Reset(SomeTxtFile) ;
      while not EOF(SomeTxtFile) do
        begin
    
       
        ReadLn(SomeTxtFile, buffer) ;
        if AnsiContainsStr(buffer, 'Onclick')  then
           begin
          StringFirst:=droite('Onclick',buffer);
          StringSecond :=gauche(')',Stringfirst);
          form1.listbox1.Items.Add(stringsecond);
           end
       end;
      CloseFile(SomeTxtFile) ;
       Form1.getpages;
    end;
    
    procedure Tform1.GetPages;
    var
    l : integer;
      SomeTxtFile : TextFile;
      buffer , buffer1, StringFirst , StringSecond : string;
    begin
      AssignFile(SomeTxtFile,'C:\fichier.rtf') ;
      Reset(SomeTxtFile) ;
      while not EOF(SomeTxtFile) do
          begin
          ReadLn(SomeTxtFile, buffer) ;
          if AnsiContainsStr(buffer, '>Next<')  then
             begin
              StringFirst:=gauche('">Next<',buffer);
              StringSecond :=droite('width:253px;"',Stringfirst);
              showmessage(stringsecond);
                     if AnsiContainsStr(stringsecond, 'href="')  then
                   begin
                   Lien:= droite('href="',stringsecond)  ;
                    CloseFile(SomeTxtFile) ;
                    cherche ;
                   end
    else 
    break ;
                 end
          end
         end;
    
    Procedure Tform1.Cherche ;
    var
    i ,j:integer ;
    begin
    j:=0;
    Recherche :='http://www.site.com'+lien;
    showmessage(recherche);
    UrlDownloadToFile(nil, PChar(recherche), PChar('C:\fichier.rtf'), 0, nil) ;
    sleep(6000);
    getlinks;
    end ;
    
    procedure TForm1.Button4Click(Sender: TObject);
    begin
    Lien :='BlaBla';
    cherche;
    end;
    
    Le code est supposé parcourir des pages du meme site et rassembler des liens d'un peu partout , mais juste a la derniere page j'ai une erreur : I/O error 104 .
    Je ne comprends pas , c'est pourtant correct non ?

  2. #2
    Membre éclairé Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619

  3. #3
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    A la lecture du lien donné par Soulama, je te conseille donc de t'assurer que tu es en mode de lecture seule avant de parcourir ton fichier.
    Si ton fichier RTF est en lecture seule, le mode d'ouverture par défaut fmOpenReadWrite déclenche ce type d'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      AssignFile(SomeTxtFile,'C:\fichier.rtf') ;
      FileMode := fmOpenRead;
      Reset(SomeTxtFile)
    @+

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 98
    Par défaut
    Yop
    Merci des reponses , sauf que ca n'a pas changé grand chose .
    Quelqu'un a une autre idée ??
    et sinon j'ai entendu dire qu'on pouvait eviter de " montrer " ces erreurs en changeant des options sur le compilateur , parce que la ca fait tres bien ce que c'est supposé faire , mais n'empeche l'erreur est un peu chiante surtout qu'il faut appuyer sur ok a chaque fois ...
    Merci

  5. #5
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Oui on peut les supprimer c'est directive $I.

    L'aide de Delphi
    Type Bascule
    Syntaxe {$I+} ou {$I-}
    {$IOCHECKS ON} ou {$IOCHECKS OFF}
    Défaut {$I+}
    {$IOCHECKS ON}
    Portée Locale
    Remarques

    La directive bascule $I active ou désactive la génération automatique du code vérifiant le résultat des appels aux procédures d'E/S. Les procédures d'E/S sont décrites dans le Guide du langage Delphi. Voir Routines standard et entrées/sorties Si une procédure d'E/S renvoie un code retour d'E/S non nul alors que cette bascule est activée, une exception EInOutError est déclenchée (ou le programme termine son exécution si la gestion des exceptions est désactivée). Lorsque cette bascule est désactivée, le programme doit tester les codes retour des procédures d'E/S à l'aide de la fonction IOResult.
    @+

  6. #6
    Membre chevronné
    Profil pro
    xxxxxxxxxxx
    Inscrit en
    Juin 2004
    Messages
    308
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : xxxxxxxxxxx

    Informations forums :
    Inscription : Juin 2004
    Messages : 308
    Par défaut
    Salut

    J'ai l'impression que les appels sont récursifs
    getLinks -> getPages -> Cherche -> getLinks -> etc.
    Du coup quand ça va dépiler, il va ya avoir des CloseFile et d'autres actions fichiers, d'où l'erreur E/S 104 (action impossible, fichier fermé).

    Je te conseille de revoir l'algorithme...

  7. #7
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 98
    Par défaut
    @Cmen76 : Oui j'y ai pensé mais j'ai trop la flemme la :/ .
    @Claudius40 : Cool , et heu c'est comment pour desactiver , je veux dire c'est ou que je trouve ces directives ?
    Merci bien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [TPW] Runtime error 104
    Par chahnou dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 18/04/2012, 19h58
  2. [Turbo Pascal] Runtime error 104
    Par cheidly dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 14/11/2011, 19h57
  3. SQL error code = -104
    Par vg-matrix dans le forum Bases de données
    Réponses: 7
    Dernier message: 18/12/2008, 22h04
  4. Startx ne démarre pas error 104
    Par grinder59 dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 13/03/2006, 17h05
  5. Error E/S 104 Readln
    Par bilbounet dans le forum Delphi .NET
    Réponses: 1
    Dernier message: 10/03/2006, 01h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo