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 :

Problème de conversion Stream vers PByte


Sujet :

Langage Delphi

  1. #1
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut Problème de conversion Stream vers PByte
    Hello !!

    J'ai une api windows qui semble prendre comme parametre un PByte ou un PChar (apres tout je ne pense pas que cela soit vraiement different).

    Cette api a pour but de decrypter un fichier dont le contenu se situe dans cette variable.

    Mon but a moi est de convertir le contenu d'un TStream (TMemoryStream Exactement) dans cette variable PByte ou PChar pour la transmetre a l'api.

    Je tourne en rond ....

    Pour info, la taille du fichier est de 6224 octets. Je pensais tout gerer en un block .... a moins que cela ne soit pas possible ...
    J'ai des soucis lors de l'appel a la methode Read ou ReadBuffer du Stream.
    Si je descent en dessous (1024) ca passe ... mais je souhaiterais eviter pour des raison de simplification du code. Si je peux tout gerer en un block ca serait bien.

    Merci d'avance

    [Edit] Au passage j'aimerais m'assurer de la traduction en DElphi de BYTE* pData
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    tu dois pouvoir utiliser MyMemoryStream.Memory qui est un pointeur sur la zone mémoire du stream

    je ne pense pas que le PByte (traduction correcte, pour moi) attendu puisse être remplacé par un PChar, qui attend forcément un #0 terminal

    il ne faudrait bien sûr pas que ton API cherche à modifier la taille du PByte : ça entraînerait sûrement une belle EAV !
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    C'ets l'api CryptDecrypt de advapi32.dll

    Elle est declarée comme BYTE* pData et visiblement modifie le contenu de pData puisque elle decrypte le block de pData selon dwDataLen et renvoie un nouveau pData avec un nouveau dwDataLen contenant le code decrypté ....

    J'avoue que la je suis un peu perdu
    J'ai essayé pas mal de choses mais je tombe sur une erreur de type "data inccorect" ou "mauvais parametres" ....
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  4. #4
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    SAlut
    c'est pas plutot BYTE *pbData
    Par ce que la meme declaration en VB ca donne ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Declare Function CryptEncrypt Lib "advapi32.dll" _
    	(ByVal hKey As Long, ByVal hHash As Long, ByVal Final As Long, _
    	ByVal dwFlags As Long, ByVal pbData As Long, _
    	ByRef pdwDataLen As Long, ByVal dwBufLen As Long) As Long
    Et eux le passe en Long
    Donc a ce que j'en comprend tu met le pointeur de ta chaine dans pbData et sa longeur dans pdwDataLen
    A++

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Citation Envoyé par Qwazerty Voir le message
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    ByVal pbData As Long
    Mon code proviens aussi d'un code VB qui marche et que je cherche a traduire en Delphi.

    Voici la declaration que j'ai :
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Declare Function CryptDecrypt Lib "advapi32.dll" (ByVal hKey As Long, ByVal hHash As Long, ByVal Final As Long, ByVal dwFlags As Long, ByRef pbData As Any, pdwDataLen As Long) As Long
    Sinon voici le code d'appel :
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Public Function Decrypt(ByVal szKey As String, ByRef pData() As Byte, ByRef dwSize As Long) As Long
        Dim lResult As Long
        lResult = UpdateKey(szKey)
        If lResult = 0 Then
            If CBool(CryptDecrypt(m_hKey, 0, 1, 0, pData(0), dwSize)) = True Then
                ReDim Preserve pData(dwSize)
                Decrypt = 0
                Exit Function
            End If
        Else
            Decrypt = lResult
            Exit Function
        End If
        Decrypt = Err.LastDllError
    End Function
    et le code d'appel de cette fonction (chargemetn du fichier)
    Code VB : 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
    Private Sub Decrypt_Click()
        Dim data() As Byte
        Dim lFileLength As Long
        Dim File As Integer
        Dim b As CProtect
        Dim lResult As Long
     
        lFileLength = FileLen(FileName.Text)
        ReDim data(lFileLength)
     
        File = FreeFile
        Open FileName.Text For Binary As #File
        Get #File, 1, data
        Close File
     
        Set b = New CProtect
        lResult = b.Decrypt(PUID.Text, data, lFileLength)
        If lResult = 0 Then
            Text2.Text = data
        Else
            Text2.Text = "Failed to Decode the file." & vbCrLf & "Error: " & lResult
        End If
     
    End Sub
    et pour finir un post ou j'ai posté le code declaratif de l'aide du SDK delphi : ici

    Je sens que je suis pret du but ... et que le probleme viendrais de la transmission de ce code la ....
    Si quelqu'un peut m'y aider ca serait cool
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  6. #6
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    si la fonction peut décrypter en produisant un texte plus long que celui crypté, ça devrait poser un pb d'utiliser directement le Stream
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  7. #7
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Visiblement c'est le cas .... d'ou (j'imagine) un redim sur le tableaux apres appel a l fonction.
    en tout cas MSDN precise bien que le resultat est retourné dans le pointeur data et la nouvelle taille eventuelle dans le pointeur dwDataLen.

    Mais en fait, peu m'importe de travailler directement sur le stream ou pas ... mais je n'airrive pas a definir convenablement le type de donné a transmetre et y placer le code convertit a partir du Stream (ou directement depuis le fichier).
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  8. #8
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Re
    Je suis pas trop a l'aise avec les Dll exterieur, les pointers et autre donc peut etre vais je dire une betise, mais pour moi Data represente un pointer vers ta chaine pas une chaine d'ou la declaration en long

    Peux tu mettre un exemple complet, je ne sais pas trop ou placer le declaration external , j'aimerais bien faire des essai mais je peche un peu pour la mise en place du code

    [Edit] Mon poste ne doit pas etre d'un grand secours, en faite les code que tu donne ci avant est un code ecrit en vb et sui doit etre fonctionnel? si c'est ca je disais bien des betises juste avant :/[/Edit]

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  9. #9
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Effectivement
    C'est du code VB qui marche .. d'ou mon prtobleme car je n'ai jamais coder en VB.
    Je comprends le code, que j'ai traduit en delphi sans trop de soucis.
    PAr contre je ne suis pas un gros utilisateur des api windows et des types windows.

    Du coup mon implementation est un peu hasardeuse et je tourne autour du pot sans trop arriver a tomber dedans
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  10. #10
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Tu ne veux pas mettre le code traduit en Delphi ca permettrais de t'aider plus efficacement

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  11. #11
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Ouaip ca ca peut le faire
    Bon j'ai fait tellement de tests que je ne sais pas ce que ca va donner ... mais ca fera peut etre avancer les choses

    MSNId2_V2 : Fichier pascal traduit
    VB_Content_Decrypt.zip : Sources VB qui "marchent"
    Fichiers attachés Fichiers attachés
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  12. #12
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    re
    Je viens de tomber sur ce lien, bon tous n'est pas tres claire mais il donne une solution de transciption en delphi de fonction de crypto.
    Peut etre as tu fais comme cela je viens de voir ton dernier poste et je vais regarder mais bon mes connaissance sont limitées
    +

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  13. #13
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Ton lien a l'air bien .... vaudra que je le regarde en detail
    JE pense que je trouverais ce qu'il me manques
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  14. #14
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Je n'ai pas regardé en détails le code, mais je confirme que BYTE *pbData se traduit bien par un type PByte. Cela dit, moi je le déclarerais Pointer, tout simplement. Parce qu'en Delphi on a l'habitude d'utiliser Pointer lorsque les données pointées sont un "bloc" sans type.

    Aussi, avec un TMemoryStream, il est en effet judicieux d'utiliser la propriété Memory de celui-ci, qui est justement de type Pointer.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  15. #15
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Citation Envoyé par sjrd Voir le message
    Aussi, avec un TMemoryStream, il est en effet judicieux d'utiliser la propriété Memory de celui-ci, qui est justement de type Pointer.
    Mais dans le cadre d'une modification du buffer transmis egalement ?

    [Edit]
    Et ben non ... j'ai beau tourner dans tous les sens ... rien ne marche
    C'est quand meme pas croyable que ce code marche en VB et pas en DElphi
    ET je vois pas ou j'ai fait une erreur ... visiblement tout passe, et j'ai bien des handles sur chaques variables (notement sur Key).
    Note : Pour le liens, c'etait bien mais visiblement la discusion n'est pas allée jusqu'a bout ....
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  16. #16
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Oui, aucun soucis
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  17. #17
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Pour en rajouter une couche sur ce qu'à dit SJRD (avec qui je plussois) :
    un pbyte est un pointeur sur un byte, or un pointeur, quel qu'il soit est un entier 32 bits non signé (donc 4 octets). Bref, tu peux le lire depuis ton stream comme un entier de type cardinal par exemple.

    Mais le mieux, c'est de déclarer cette structure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    TAccesMemoire = Record 
        Case i: Smallint of 
          1: (UnPointeur: Pointer); 
          2: (UneAdresse: Cardinal); 
          3: (UnPointeurSurCaractere: ^Char); 
          4: (UnPointeurSurByte: ^Byte); 
      end; 
    ...
    var Acces: TAccesMemoire;
    Et a partir de là, tu fais ce que tu veux du contenu de ton pointeur !!!
    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
    //Pour lire la variable depuis le memory stream
    TonStream.Read(Acces.UneAdresse,4); //on lit 4 octets
     
    ...
    //Exemple d'utilisation n°1
    var ValeurPointee, ValeurSuivanteEnMemoire:byte;
    ...
    ValeurPointee:=Acces.UnPointeurSurByte^;
    Acces.UneAdresse:=Acces.UneAdresse+4; //faire ça avec un type Pointer tout bête, ça ne marche pas...
    ValeurSuivanteEnMemoire:=Acces.UnPointeurSurByte^;
     
    //Exemple 2 : Après la lecture, voici l'écriture ;)
    var Buf:array[0..N-1] of byte;
    Acces.UnPointeur:=@buf[0]; (on pointe sur le premier élément du buffer)
    //vérification...
    ShowMessage('Valeur de buf[0] : '+inttostr(Acces.UnPointeurSurByte^));
    //Enregistrement dans le stream :
    TonStream.Write(Acces.UneAdresse,4); //on écrit 4 octets
    C'est sportif hein ?

    Vas voir dans la FAQ à la rubrique "Quid des pointeurs ?" pour plus d'explications.
    A+
    Bidouilleuse Delphi

  18. #18
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Sinon
    Private Declare Function CryptDecrypt Lib "advapi32.dll" (ByVal hKey As Long, ByVal hHash As Long, ByVal Final As Long, ByVal dwFlags As Long, ByRef pbData As Any, pdwDataLen As Long) As Long
    En Delphi, ça donnerais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function CryptDecript(hKey,hHash,Final,dwFlags:cardinal;var pbData:pointer;var dwDataLen:cardinal);
    Mais je ne suis sur de rien
    Bidouilleuse Delphi

  19. #19
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Citation Envoyé par waskol Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function CryptDecript(hKey,hHash,Final,dwFlags:cardinal;var pbData:pointer;var dwDataLen:cardinal);
    Mais je ne suis sur de rien
    Juste un petit soucis : pas de var pour pbData (ou alors pas d'indication de type, ce qui est plus proche du code VB, mais dans ce cas moins pratique en Delphi)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function CryptDecrypt(hKey, hHash, Final, dwFlags: Cardinal;
      pData: Pointer; var dwDataLen: Cardinal): Pointer;
    // ou :
    function CryptDecrypt(hKey, hHash, Final, dwFlags: Cardinal;
      const data; var dwDataLen: Cardinal): Pointer;
    (la différence se situde dans la déclaration du paramètre pData - ici la première définition est sans aucun doute la plus facile à manipuler)
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  20. #20
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    La lecture de l'unité Wcrypt2.pas contenue dans ce zip devrait t'aider à résoudre ton problème d'appel.

    En complément j'ai également trouvé ce lien qui utilise cette unité pour crypter/décrypter un fichier via un TFileStream.

    @+ Cl@udius.

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/08/2010, 12h49
  2. Probléme de conversion char vers datetime
    Par locs dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 28/02/2007, 15h29
  3. Problème de conversion TeX vers DVI
    Par Faith's Fall dans le forum Editeurs / Outils
    Réponses: 7
    Dernier message: 20/10/2006, 10h46
  4. Problème de conversion decimal vers Hexa
    Par Elbarto dans le forum C++
    Réponses: 1
    Dernier message: 06/02/2006, 19h37
  5. [MFC] Problème de conversion CString vers Char *
    Par Darkenshin dans le forum MFC
    Réponses: 10
    Dernier message: 02/12/2005, 14h42

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