Erreur E/S 123. [Résolu]

la_gavorade 24 Messages postés jeudi 22 juillet 2004Date d'inscription 30 juin 2006 Dernière intervention - 24 mars 2005 à 14:30 - Dernière réponse : la_gavorade 24 Messages postés jeudi 22 juillet 2004Date d'inscription 30 juin 2006 Dernière intervention
- 29 mars 2005 à 18:12
Bonjour à tous,

J'aimerais avoir vos avis sur ce petit pb surement très bête mais chiant pour un amateur comme moi...

Je développe des petits programmes au boulot pour me faciliter la vie et celle de mon équipe, et je mets les exécutables à disposition de tous sur le réseau interne de la boîte.

Le pb est que quand j'introduis un select directory dans ces programmes, ça marche très bien chez moi, mais moins bien quand ils sont lancés du réseau...
Là où ça coince, et où je m'arrache les cheveux, c'est que pour certains programmes ça fonctionne, pour d'autres non, et ça dépend aussi du poste à partir duquel on les lance !!!

C'est un peu la quatrième dimension.

Bref, si vous avez une astuce de Sioux, je suis preneur !

Merci, bonne journée à tous !

Thomas.
Afficher la suite 

13 réponses

Répondre au sujet
japee 1792 Messages postés vendredi 27 décembre 2002Date d'inscription 12 novembre 2016 Dernière intervention - 26 mars 2005 à 01:56
+3
Utile
Ouaip, un bon



ChDir(ExtractFilePath(Application.ExeName));



Je pensais moi aussi à un truc dans le genre.

Parce que des fois, à force de se balader de répertoire en répertoire,
à coup d'OpenDialog et de SelectDirectory, et à moins d'avoir pensé à
semer quelques caillous, lol...



Bonne prog'



japee
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de japee
WhiteHippo 1270 Messages postés samedi 14 août 2004Date d'inscription 5 avril 2012 Dernière intervention - 24 mars 2005 à 15:54
0
Utile
Bonjour

Quelques idées en passant :

1 - Si tu utilises un lecteur réseau, vérifie qu'il soit définit de façon identique sur tous les postes. Par exemple, si tu as un lecteur U: définit comme étant le répertoire \users sur un serveur X, il faut que tous les autres postes définissent à l'identique ce lecteur réseau U:

2 - Les utilisateurs ont-ils tous les mêmes droits ? Un répertoire accessible d'un poste ne l'est peut être pas depuis un autre.

3 - Au lieu de faire un select directory, ne peux tu pas laisser l'utilisateur choisir lui même le bon répertoire par un dialogbox ?

Cordialement.
Commenter la réponse de WhiteHippo
jmp77 1232 Messages postés lundi 4 février 2002Date d'inscription 4 octobre 2006 Dernière intervention - 24 mars 2005 à 15:58
0
Utile
Hello,



Donne nous un morceau de code on le probleme se produit.

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
Commenter la réponse de jmp77
la_gavorade 24 Messages postés jeudi 22 juillet 2004Date d'inscription 30 juin 2006 Dernière intervention - 24 mars 2005 à 17:57
0
Utile
Merci pour ces premiers éléments de réponse...

Pour répondre à WhiteHippo en premier, et après vérif, le lecteur réseau est bien défini de la même façon sur tous les postes. Ensuite toute l'équipe a les mêmes droits, et même moi en le lançant de mon poste mais en chercher l'exécutable sur le réseau ça merde.

Voici la procédure qui plante, je vous la mets juste au cas où mais y'a pas grand chose de plus simple...

procedure TForm_Main.BitBtn_search_concClick(Sender: TObject);

var
Dir : string;

begin {BitBtn_Search_conc}

Dir := 'C:\' ;
if SelectDirectory(Dir, [SdAllowCreate, SdPerformCreate, SdPrompt], SELDIRHELP)
then Edit_Output1.Text := Dir ;

end ; {BitBtn_Search_conc}

SELDIRHELP est déclaré en constante = 1000 dans l'interface de l'unité principale, Edit_Output1 est un bête TEdit qui retourne le dossier sélectionné.

Je pensais que c'était dû au fait que je déclare le string Dir égal au lecteur C par défaut, et comme on exécute du réseau ça lui plaît pas, mais pourquoi alors dans certains programmes ça marche et dans d'autres pas ?

J'attends votre aide, merci pour votre réactivité !
Commenter la réponse de la_gavorade
WhiteHippo 1270 Messages postés samedi 14 août 2004Date d'inscription 5 avril 2012 Dernière intervention - 24 mars 2005 à 18:25
0
Utile
Je ne vois pas bien le probleme ! J'ai essayé chez moi pas de plantage même avec un appel de l'executable situé sur un autre poste et une création de repertoire sur le poste distant.

Quel est le système d'exploitation, XP ? Si oui, comment êtes vous tous connectés ? ( en tant qu'utilisateur simple, ou avec pouvoir, en tant qu'administrateur .... )

N.B. Je te conseillerai cependant d'initialiser ta variable dire comme suit :
Dir := paramstr(0);
Cela pour avoir comme repertoire initial le repertoire d'où l'executable est lancé.

Cordialement.
Commenter la réponse de WhiteHippo
WhiteHippo 1270 Messages postés samedi 14 août 2004Date d'inscription 5 avril 2012 Dernière intervention - 24 mars 2005 à 18:44
0
Utile
J'oubliais, ce qui serait bien également c'est de gérer le cas ou le selectdirectory renvoie false en affichant un message à l'utilisateur et en fixant un repertoire par défaut dans le Edit_Output1.

Cela permettra de savoir si le nom de repertoire est correct ou pas.

A tout hasard, des imprimantes reseaux ne seraient pas declarées ? si c'est le cas, il faut vérifier qu'il y a une imprimante par defaut de definie et que la ou les imprimantes reseaux sont bien accessibles.

Cordialement.
Commenter la réponse de WhiteHippo
la_gavorade 24 Messages postés jeudi 22 juillet 2004Date d'inscription 30 juin 2006 Dernière intervention - 24 mars 2005 à 19:21
0
Utile
Du nouveau, du nouveau !!!

Je vous explique d'abord comment je fonctionne :

Je développe de mon poste, mes sources sont sur mon HDD et je complie de là pour vérifier que tout est OK
Ensuite je vais copier tous les fichiers (sources + exe) sur le réseau à un emplacement accessible uniquement par les personnes de mon équipe.
Enfin, je crée un raccourci de chaque exe, raccourci que j'enregistre dans un dossier "Delphi Prog" sur le réseau lui aussi.

J'ai ré-essayé sur un programme qui marchait bien du réseau, et voilà ce que j'ai observé :

Je lance l'exe du réseau, j'appuie sur le bouton qui lance le SelectDirectory, et là tout est OK, j'ai bien ma boite de dialogue et le lecteur par réseau est le C:, quelque soit le poste d'où je lance.
Par contre, si je recompile mes sources directement sur le réseau, là ensuite quand je relance l'exe ça ne marche plus (erreur E/S 123.)
Du coup je recompile de mon HDD, je copie l'ensemble (sources + exe) et je colle tout ça sur le réseau (en écrasant les anciens fichiers)...... Et ben ça marche toujours pas !

Et maintenant il marche plus.

Du coup je vais réessayer demain (après un reboot du PC et une bonne nuit de dodo) et je vous tiens au courant... Voilà, si ça vous donne des pistes ou des idées, n'hésitez pas.

Merci pour vos efforts !

Thomas.
Commenter la réponse de la_gavorade
la_gavorade 24 Messages postés jeudi 22 juillet 2004Date d'inscription 30 juin 2006 Dernière intervention - 25 mars 2005 à 11:33
0
Utile
Bon ben rien de nouveau en fait...

J'ai initialisé ma variable Dir en paramstr(0), mais ça n'a pas amélioré le truc, j'ai essayé d'appeler IOResult à la fin de la procédure pour réinitialiser ma variable d'E/S, comme suggéré dans l'aide Delphi, pas d'amélioration non plus...

Et je sais toujours pas à quoi correspond une erreur E/S 123. !!!!!!!!

Je m'en remets à vous, merci pour vos efforts !

Thomas.
Commenter la réponse de la_gavorade
WhiteHippo 1270 Messages postés samedi 14 août 2004Date d'inscription 5 avril 2012 Dernière intervention - 25 mars 2005 à 12:08
0
Utile
Bonjour


Peux tu nous détailler exactement, ce que tu fais dès que tu appuyes sur le bouton qui lance le SelectDirectory.
Nous dire le répertoire par défaut, celui que tu selectionnes ou que tu crées, etc...

Autre chose, si tu valides juste le dialog box sans rien modifier, as tu l'erreur ?

Cordialement.
Commenter la réponse de WhiteHippo
la_gavorade 24 Messages postés jeudi 22 juillet 2004Date d'inscription 30 juin 2006 Dernière intervention - 25 mars 2005 à 15:11
0
Utile
Et bien en fait, je fais rien après avoir appuyé sur le bouton qui lance le Selectdirectory, parce que j'ai ce message d'erreur Windows "Erreur E/S 123." qui arrive tout de suite à la place de la Dialog Box !

Il me fait pas perdre la main, si j'appuie sur le OK du message d'erreur je récupère la main sur mon interface et je peux lancer le programme quand même en rentrant l'adresse du dossier requis dans mon Edit_Output1, mais impossible d'aller sélectionner un dossier à l'aide du SelectDirectory...

C'est pas bloquant mais c'est ch...

Merci encore, je reste à l'écoute !!!

Thomas.
Commenter la réponse de la_gavorade
WhiteHippo 1270 Messages postés samedi 14 août 2004Date d'inscription 5 avril 2012 Dernière intervention - 25 mars 2005 à 16:01
0
Utile
Et si tu essayais de mettre un chDir(Dir) avant l'appel du SelectDirectory, juste pour voir.

Cordialement.
Commenter la réponse de WhiteHippo
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 26 mars 2005 à 09:41
0
Utile
La doc (Win32 Developer's reference) indique pour l'erreur 123:
123L ERROR_INVALID_NAME
The file name, directory name, or volume label is syntactically incorrect.
(voir dans Programmes/Delphi x/Aide/Fichiers d'aide MS SDK/Guide du développeur Win32).

En relisant bien les options de la fonction SelectDirectory on y trouve :
sdPrompt : Utilisé uniquement en combinaison avec sdAllowCreate.Affiche une boîte de message informant l'utilisateur quand le répertoire saisi n'existe pas et demandant si ce répertoire doit être créé.Si l'utilisateur choisit OK,le répertoire est créési l'ensemble d'options comprend sdPerformCreate.S'il ne comprend pas sdPerformCreate,le répertoire n'est pas créé:l'application doit lire le nom du répertoire et le créer.

Ce qui confirmerait que l'appui sur la touche annuler déclenche une erreur puis que l'on tente d'utiliser un répertoire qui n'est pas créé d'où le message d'erreur : ERROR_INVALID_NAME




<HR color=#008000>


Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Commenter la réponse de cs_Delphiprog
la_gavorade 24 Messages postés jeudi 22 juillet 2004Date d'inscription 30 juin 2006 Dernière intervention - 29 mars 2005 à 18:12
0
Utile
Merci à tous !!!

Votre patience et votre réactivité m'ont permis de tordre le cou à ce problème.

Effectivement, j'ai encore bcp bcp à apprendre de Delphi, puisqu'un simple petit ChDir résolvait tous mes soucis ! Bien la peine de se creuser la tête pendant tout ce temps...

Donc merci WhiteHippo, Japee et Delphiprog, mes collègues vont enfin pouvoir utiliser mes prgs sans que je sois obligé de laisser trainer partout des fichiers ReadMe.txt qui expliquent comment contourner cette (...) d'erreur E/S 123...

A la prochaine !
Commenter la réponse de la_gavorade

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.