|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2006 Messages : 37 ![]() |
Bonjour.
Je dispose de Delphi10 Pro sous Windows 7 et donc de Indy10. Ma connection à Internet se fait par une LiveBox que j'ai configurée pour permettre l'accès entrant à mon poste en local. Je souhaite échanger un fichier avec des postes connectés sur internet. Dans la faq Delphi, "reisubar" donne une réponse complète à cette question en utilisant TidStreamVCL. Malheureusement, je ne dispose pas de cet objet dans ma version Pro de Delphi !!!! Mes recherches n'ayant pas abouti, ma question est donc : où peut-on trouver la dll contenant TidStreamVCL ? Merci d'avance. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : août 2002 Messages : 1 073 ![]() |
Apparemment la classe est devenue: TIdStream
Edit: j'ai dit une bêtise, ça m'apprendra à rechercher trop vite.
__________________
Delphi 7 Windows XP/Vista |
|
|
00
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() Développeur C++\Delphi Inscription : juillet 2006 Messages : 9 195 ![]() |
Delphi 10 = Delphi 2007 ?
J'ai à la fois Indy 9 et Indy 10 dans mon dossier CodeGear\BDS\5.0\Source\Indy\Indy9\IdStream.pas - non trouvé CodeGear\BDS\5.0\Source\Indy\Indy10\System\IdStreamVCL.pas - J'ai au mieux une TIdStreamHelperVCL Pense à Rechercher du forum, on y trouve rapidement Undeclared identifer TIdStreamVCL dont les liens indique la suppression de cette classe TIdStreamVCL dont l'utilité semble discutable, son but était de simplifier le code entre Indy VCL et Indy.NET Il va falloir retirer cette classe intermédiare et manipulé directement le TMemoryStream ! Pourquoi parles-tu de DLL ? C'est soit dans un fichier .PAS comme IdStream.pas contenant TIdStream ou IdStreamVCL.pas contenant TIdStreamHelperVCL C'est soit dans un BPL si tu utilises la compilation avec paquet d'éxécution mais cela ne change pas le uses !
__________________
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y ! Attention Troll Méchant ! ![]() "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer ! L'ignorance n'excuse pas la médiocrité ! L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde) Il faut avoir le courage de se tromper et d'apprendre de ses erreurs Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié ! |
|
|
00
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2006 Messages : 37 ![]() |
J'aurais dû, c'est sûr, rechercher dans le forum, sauf que je n'avais pas vu la case "Recherche" !! Manque de pratique sans doute.
J'ai utilisé TMemoryStream, avec SaveToFile et LoadFromFile. Si je lance l'envoi du fichier à partir du Client.exe en double clickant sur son icône vers le Serveur en mode déboguage, le transfert est parfait !!!! Mais si je lance l'envoi du fichier à partir du Client.exe vers le Serveur.exe en double-clickant sur leurs icônes respectives, le flux n'est pas récupéré par le serveur et le transfert ne se fait pas. Compte tenu de ma faible culture en informatique, il m'est impossible de comprendre ce phénoméne. J'ai toujours été convaincu que le fichier .exe en mode compilation par "F9" devait avoir le même comportement que le fichier .exe lancé en double-clickant sur son icône. Je reste donc bloqué et plus que perplexe, avec un futur bien sombre pour la suite de mon projet. Où peut bien se nicher l'erreur ? Merci d'avance pour vos éclairages. |
|
|
00
|
|
|
#5 |
|
Expert Confirmé Sénior
![]() Développeur C++\Delphi Inscription : juillet 2006 Messages : 9 195 ![]() |
tu indiques un nom complet de fichier : c:\dossier\sous-dossier\fichier.ext ?
Entre F9 et double-clic, le dossier courant peut être différent, ainsi que les variables d'environnement
__________________
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y ! Attention Troll Méchant ! ![]() "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer ! L'ignorance n'excuse pas la médiocrité ! L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde) Il faut avoir le courage de se tromper et d'apprendre de ses erreurs Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié ! |
|
|
00
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2006 Messages : 37 ![]() |
Il ne peut s'agir d'un problème de nom de fichier puisque ça fonctionne en faisant F9.
Pour l'environnement, pourquoi pas. Mais dans ce cas, comment fait-on pour s'en affranchir? Ne pourrait-il pas s'agir d'un problème dr Thread? J'ai en effet le serveur et le client sur mon PC et j'essaie de transférer un fichier d'un dossier (client) vers un autre dossier (serveur), sur le Host 127.0.0.1. Par ailleurs, j'envoie le fichier dans un MemoryStream et je le récupère dans un FileStream car je n'ai pas trouvé, dans l'aide, la méthode MemoryStream.SaveToFile. Mais, comme je l'ai dit, ça fonctionne parfaitement par F9 pour le Serveur et double clic sur le Client.exe. Merci d'avance. |
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2006 Messages : 37 ![]() |
J'ai placé un mémo sur la fiche Serveur pour y afficher les résultats de chaque ligne de code.
Je constate -que le nom de fichier est bien transféré, -que le nom de fichier destination (NomFichier) est correct avec son chemin complet -mais que le flux n'est pas créé par fStream:= TFileStream.Create(NomFichier,fmCreate). Si je fais F9 sur Dephi, ce flux est créé sans problème. Voilà une information complémentaire qui peut peut-être aider pour trouver une solution. |
|
|
00
|
|
|
#8 |
|
Expert Confirmé Sénior
![]() Développeur C++\Delphi Inscription : juillet 2006 Messages : 9 195 ![]() |
Peut-être l'UAC avec son VirtualStore, les fichiers ini par exemple ne sont pas forcément là ou l'on pense !
TFileStream renvoie une exception, tente un GetLastError (si c'est pas trop tard) tente un CreateFile (API Windows)
__________________
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y ! Attention Troll Méchant ! ![]() "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer ! L'ignorance n'excuse pas la médiocrité ! L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde) Il faut avoir le courage de se tromper et d'apprendre de ses erreurs Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié ! |
|
|
00
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2006 Messages : 37 ![]() |
Avec CreateFile je me retrouve dans la même situation : impossible de créer le flux fichier exigé par ReadStream.
Je vais demander à un ami de venir chez moi avec son portable. Nous pourrons constituer un réseau local (je suis actuellement seul sur ce réseau) et échanger par nos adresses 192.165.1.x. Nous verrons alors s'il y a un conflit entre le Client et le Serveur lorsqu'ils communiquent sur un même poste. Je ne vois plus d'autre solution. Je donnerai de mes nouvelles après cet essai. |
|
|
00
|
|
|
#10 |
|
Expert Confirmé Sénior
![]() Développeur C++\Delphi Inscription : juillet 2006 Messages : 9 195 ![]() |
Le Fichier lu par le client est différent du fichier écrit par le serveur ?
En F9, si tu débug, tu ralentis le serveur qui, du coup, peut écrire dans un fichier qui n'est pas bloqué par un autre process (le client)
__________________
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y ! Attention Troll Méchant ! ![]() "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer ! L'ignorance n'excuse pas la médiocrité ! L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde) Il faut avoir le courage de se tromper et d'apprendre de ses erreurs Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié ! |
|
|
00
|
|
|
#11 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2006 Messages : 37 ![]() |
Le fichier lu par le Client et le fichier écrit par le Serveur portent le même nom mais sont dans des dossiers différents.
J'ai déjà fait l'essai de ralentir le client par un Sleep(500) mais sans résultat. J'ai réssayé ce matin en mettant un Sleep(500) avant chaque Write mais sans plus de résultat. Avec le Client et le Serveur sur 2 PC différents, les process ne devraient pas se contrarier. Cet essai sera fait au plus tard dans 3 jours. |
|
|
00
|
|
|
#12 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2006 Messages : 37 ![]() |
L'essai vient de se terminer. Sans succès. TFileStream non créé.
Que peut-on faire?? |
|
|
00
|
|
|
#13 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2006 Messages : 37 ![]() |
Du nouveau. Le fichier est transféré sur une clé USB selon la séquence suivante :
Code :
Mon problème n'est donc pas complétement réglé. Mais cette information peut peut-être faire entrevoir une explication. |
||
|
|
00
|
|
|
#14 |
![]() ![]() Développeur informatique Inscription : mars 2005 Messages : 4 995 ![]() |
Si le fichier est du style "c:\toto.txt' sous un windows 7 avec UAC, c'est normal que cela ne fonctionne pas car L'os n'autorise pas l'écriture de fichier direct à la racine de C
__________________
Modérateur Delphi Combattez la brute Aucune réponse aux sollicitations techniques par MP Le guide du bon forumeur :
[Projet en cours] Des unités pour faciliter l'utilisation d'indy : EasyIndy 1.3 |
|
|
00
|
|
|
#15 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2006 Messages : 37 ![]() |
Effectivement. Le problème est donc résolu.
Derrière C:\ , se trouve pourtant le fichier C:\PDOXUSRS.NET sur mon ordinateur, tout seul il est vrai. S'il n'avait pas été là, j'aurais peut-être été alerté. Toujours ce manque de connaissances de base!! Merci infiniment pour le temps passé sur mon cas. Je vais pouvoir enfin continuer mon projet. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com