Erreur E/S 123.

Résolu
la_gavorade Messages postés 23 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 30 juin 2006 - 24 mars 2005 à 14:30
la_gavorade Messages postés 23 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 30 juin 2006 - 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.

13 réponses

japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
26 mars 2005 à 01:56
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
3
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
24 mars 2005 à 15:54
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.
0
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
24 mars 2005 à 15:58
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.
0
la_gavorade Messages postés 23 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 30 juin 2006
24 mars 2005 à 17:57
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é !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
24 mars 2005 à 18:25
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.
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
24 mars 2005 à 18:44
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.
0
la_gavorade Messages postés 23 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 30 juin 2006
24 mars 2005 à 19:21
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.
0
la_gavorade Messages postés 23 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 30 juin 2006
25 mars 2005 à 11:33
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.
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
25 mars 2005 à 12:08
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.
0
la_gavorade Messages postés 23 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 30 juin 2006
25 mars 2005 à 15:11
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.
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
25 mars 2005 à 16:01
Et si tu essayais de mettre un chDir(Dir) avant l'appel du SelectDirectory, juste pour voir.

Cordialement.
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
26 mars 2005 à 09:41
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.
0
la_gavorade Messages postés 23 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 30 juin 2006
29 mars 2005 à 18:12
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 !
0
Rejoignez-nous