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 :

[Delphi 2006] Pb de cast sur une procédure


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2006
    Messages : 5
    Par défaut [Delphi 2006] Pb de cast sur une procédure
    Bonjour,
    Voilà j'essai de compiler un projet qui utilise (entre autre) ZipForge de
    ComponentOne, ça fais longtemps que je n'est pas touché à Delphi et là sous le 2006 j'ai une erreur un peu bizarre dans cette procédure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TZipper.CheckEvents();
    begin
      FZip.AfterOpen:= OnAfterOpen;
      FZip.OnConfirmOverwrite := OnConfirmOverwriteR;
      FZip.OnConfirmProcessFile:= OnConfirmProcessFile;
      FZip.OnCopyTempFileProgress:= OnCopyTempFileProgress;
      FZip.OnFileProgress:= OnFileProgress;
      FZip.OnOverallProgress:= OnOverallProgress;
      FZip.OnPassword := OnPassword;
      FZip.OnProcessFileFailure := OnProcessFileFailure;
      FZip.OnRequestBlankVolume := OnRequestBlankVolume;
    end;
    Pour chaque ligne entre begin et end j'ai l'erreur:
    [Pascal Error] engine_Zipper.pas(501): E2010 Incompatible types: 'WideString' and 'string'

    Surement que la version de zipforge utilisée n'était pas la même, en attendant il n'y a plus que cette version de dispo
    J'ai essayé ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     FZip.OnConfirmOverwrite := WideString(OnConfirmOverwriteR);
    mais alors là ça devient un string et plus une procédure, et donc il me dis qu'il manque des paramètres...
    sinon les procédures FZip.OnConfirmOverwrite et OnConfirmOverwriteR ont les mêmes paramètres.

    S'il vous plaît si quelqu'un à une idée pour l'instant je patine...

    MODIF:
    Je viens aussi d'essayer ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     FZip.OnConfirmOverwrite := StringToWideString('OnConfirmOverwriteR',850);
    (fonction stringToWideString provenant de http://www.swissdelphicenter.ch/en/showcode.php?id=1692)
    Et nouveau message d'erreur pour cette ligne:
    [Pascal Error] engine_Zipper.pas(535): E2010 Incompatible types: 'TZFConfirmOverwriteEvent' and 'WideString'
    Je patine toujours...

  2. #2
    Membre très actif
    Avatar de octal
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    441
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 441
    Par défaut
    Moi ce que je voudrai voir c'est surtout comment tu définit dans ton code tes procedures
    OnConfirmOverwriteR
    OnConfirmProcessFile;
    OnCopyTempFileProgress;
    OnFileProgress;
    Onxxxxxxx...


    Cordialement

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2006
    Messages : 5
    Par défaut
    Voilà les déclarations d'une des procédure qui pose problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private:
    procedure OnConfirmOverwrite(Sender: TObject; SourceFileName: string; var DestFileName: string; var Confirm: Boolean);
     
     
    procedure TZipper.OnConfirmOverwrite(Sender: TObject; SourceFileName: string;
      var DestFileName: string; var Confirm: Boolean);
    begin
      /// This will never get fired because Overwrite <> omPrompt
      /// but I am just translating from the VCLZip component
      Log(WideFormat(Translator.GetMessage('332'),
          [SourceFileName, FFileName], FS), false, true);
    end;
    les autres sont déclarées de la même manière...

  4. #4
    Membre éclairé
    Avatar de gb_68
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 232
    Par défaut
    Bonjour,
    regarde le type de FZip.OnConfirmOverwrite ; je pense qu'il a du passer de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    procedure(Sender: TObject; SourceFileName : String ; var DestFileName: String ; var Confirm: Boolean) of object;
    // http://www.componentace.com/help/zf_guide/onconfirmoverwrite.htm
    à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure(Sender: TObject; SourceFileName : WideString; var DestFileName: WideString; var Confirm: Boolean) of object;
    car dans le hpp ZipForge.hpp (que je viens de télécharger), il y a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef void __fastcall (__closure *TZFConfirmOverwriteEvent)(System::TObject* Sender, WideString SourceFileName, WideString &DestFileName, bool &Confirm);
    Essaye de remplacer string par WideString dans tes méthodes.

  5. #5
    Membre très actif
    Avatar de octal
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    441
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 441
    Par défaut
    entièrement d'accord ... je pesne qu'ils sont passé en WideString pour les chaines. rempalces les tiennes en WideString et refait un essai.
    Cordialement

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2006
    Messages : 5
    Par défaut
    Bonjour,
    Et désolé du retard, je viens d'essayer, et c'est ça. Merci à vous deux.

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

Discussions similaires

  1. pointer sur une procédure d'un autre module
    Par jeje22 dans le forum VBA Access
    Réponses: 2
    Dernier message: 13/07/2007, 11h30
  2. Delphi et envoi de données Sur une base de données
    Par MooMo dans le forum Bases de données
    Réponses: 7
    Dernier message: 17/06/2007, 10h51
  3. Aide sur une Procédure stockée
    Par NicoNGRI dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/12/2006, 00h48
  4. Gros Pb de perf sur une procédure stockée
    Par El Riiico dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 05/05/2006, 15h51
  5. Réponses: 4
    Dernier message: 14/06/2004, 16h18

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