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

Langage Delphi Discussion :

[Delphi] [DLL] Problème avec un paramètre PChar


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 141
    Points : 43
    Points
    43
    Par défaut [Delphi] [DLL] Problème avec un paramètre PChar
    Bonjour.

    Voila mon prob... J'ai écrit une DLL win32 (en pascal) qui contient une fonction de sauvegarde. Cette fonction recoit en entrée le chemin du fichier de sauvegarde, par exemple:

    c:\\repertoire1\\repertoire2\\texte.txt

    Voici le code de cette fonction:

    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
     
    procedure TForm6.SauvegardeFichier(chemin: pchar);
    var
     cheminSauvegarde,chemin1, nomVolume: string;
     compteur1: integer;
     fichier: textFile;
    begin
      chemin1:= string(chemin);    
      cheminSauvegarde:='\';
      nomVolume:= chemin[1];       // récupére le nom du volume de sauvegarde
      for compteur1:=5 to length(chemin) do   //scrute le chemin du caractere 5 à la fin
      begin
        if ((chemin1[compteur1]<>'\') or (chemin1[compteur1+1]<>'\') ) then // récupere le nom de chaque répertoire
        begin
           cheminSauvegarde:= cheminSauvegarde+chemin1[compteur1];
        end
        else
        begin
              MkDir(nomVolume+':'+ cheminSauvegarde); //sauvegarde le répertoire récupéré
        end;
      end;
               MkDir(nomVolume+':'+ cheminSauvegarde); 
               AssignFile(fichier, cheminSauvegarde);           // créer le fichier texte
               Rewrite(fichier);
               Writeln(fichier, '<FICHE_TEST></FICHE_TEST>');
               closeFile(fichier);
    end;
    Cette fonction me permet de "découper chaque partie du chemin pour créer les répertoire et le fichier.
    Le problème, c(est que cette fonction va etre appelé par un programme en C qui l'appellera de la manière suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
              Ptr5("C:\\repertoire1\\repertoire2\\texte.txt");
    avec PTR5 qui est un pointeur sur ma fonction (appel dynamique).

    Cela me provoque une erreur fatal qui se passe lors du passage du parametre d'entrée puisque quand je fixe dans ma DLL le chemin de sauvegarde tout se passe bien...

    Quelqu'un voit-il le problème???

  2. #2
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 141
    Points : 43
    Points
    43
    Par défaut
    C'est bon je viens juste de trouver le problème

    En fait le chemin recu dans la DLL est différent de celui envoyé. En effet dans le chemin les '\\' sont remplacé par '\' (difficile de s'en appercevoir puiqu'on ne peut pas faire du "pas à pas" dans une DLL.
    Il faut donc changer la condition dans le programme.
    En effet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ((chemin1[compteur1]<>'\') or (chemin1[compteur1+1]<>'\') )
    devient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (chemin1[compteur1]<>'\' )
    c'était nul mais fallait le voir
    A+

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 24/03/2014, 08h35
  2. Réponses: 3
    Dernier message: 31/03/2011, 20h03
  3. [Delphi 6 et 7] Problème avec SuiSkin
    Par guence dans le forum Composants VCL
    Réponses: 4
    Dernier message: 29/09/2005, 16h51
  4. Comment intégrer un Delphi DLL dans CBuilder
    Par Xavier dans le forum C++Builder
    Réponses: 3
    Dernier message: 13/09/2005, 16h49
  5. Réponses: 5
    Dernier message: 08/07/2002, 16h22

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