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

WinDev Discussion :

Convertir code C en WL


Sujet :

WinDev

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 201
    Points : 48
    Points
    48
    Par défaut Convertir code C en WL
    Bonjour,

    J'essaye de convertir la fonction suivante d'une API (utilisation d'une DLL externe) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Syntax : EdsGetProperyDesc(EdsBaseRef inRef,EdsPropertyID inPropertyID,EdsPropertyDesc* outProperyDesc )
    
    outProperyDesc
    Specifies a pointer to the EdsPropertyDesc structure for getting a list of property data that can currently be set in the target object.
    If the API return value is EDS_ERR_OK, a settable property data list of properties that can be set is specified, as retrieved from the target object.
    The structure of the list of property data that can be set (EdsPropertyDesc) has the following constituent elements
    
    form EdsInt32 Reserved (currently, always 0)
    access EdsAccess Reserved (currently, always 0)
    numElements EdsInt32 Indicates the number of property data list elements stored in the PropDesc array.
    propDesc EdsInt32[] A property data array. The meaning of PropDesc array elements varies depending on the property type.
    Mon code WinDev est le suivant, lors de l'exécution WinDev plante...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    tabMontableau est une structure
    form est entier sur 4 octets
    access est entier sans signe sur 4 octets
    numElements est entier sur 4 octets
    propDesc est un tableau d'entier sur 4 octets
    FIN
    stMonArray est un tabMontableau
     
    // Get ISO APN
    RetAPI = API(DllName,"EdsGetPropertyDesc", cameraRef, kEdsPropID_ISOSpeed , &stMonArray)
    Trace(RetAPI)
    Warning : Le membre 'propDesc' de la structure 'tabMontableau' n'est pas un tableau fixe. Pour passer une structure contenant un tableau à une API, il faut utiliser soit un tableau fixe, soit un entier (système) contenant l'adresse d'un tableau alloué par ailleurs. Reportez-vous à la documentation de l'API à appeler.

    Quelqu'un as une idée sur comment utiliser/coder correctement cette fonction ?

    Merci

  2. #2
    Membre averti Avatar de tunizar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 573
    Points : 427
    Points
    427
    Par défaut
    Bonjour,
    Pourquoi ne pas voir la chose dans le sens inverse, c'est à dire depuis le code en C appeler du code WinDev via les langages externes
    Ainsi le code en C garde son originalité.
    Je l'ai fais avant avec Java

  3. #3
    Invité
    Invité(e)
    Par défaut
    Il s'agit de quelle version de windev?

    JE verrais bien dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    propDesc est un tableau fixe de 4 entiers
    à vérifier

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 201
    Points : 48
    Points
    48
    Par défaut
    Version 20. J'obtiens l'erreur fatale de programmation

    romulus001 j'avais déjà essayé, cela est la même chose ca plante quand même

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 217
    Points : 487
    Points
    487
    Par défaut
    Bonjour,

    Peut on voir le code dans son intégralité ?
    Avez-vous initialisé le SDK avant ?

    Cordialement,

    Madsl@nD

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par seb-65 Voir le message
    Version 20. J'obtiens l'erreur fatale de programmation

    romulus001 j'avais déjà essayé, cela est la même chose ca plante quand même
    As tu installé les différents patchs correctifs?

  7. #7
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 120
    Points : 9 533
    Points
    9 533
    Par défaut
    j'essaierais bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    buf est un buffer
    RetAPI = API(DllName,"EdsGetPropertyDesc", cameraRef, kEdsPropID_ISOSpeed , &buf )
    Trace(RetAPI)
     
    transfert( &stMonArray, &buf, 12)
    n0 = stMonArray.NumElements
    transfert( &stMonArray, &buf, 12 + 4*n0)

  8. #8
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 201
    Points : 48
    Points
    48
    Par défaut
    Bonjour à tous,

    Merci pour votre aide ! En reprenant le doc de l'API je me suis aperçu que pour cette fonction là il faut un tableau de 128 entiers

    Donc avec la structure suivante cela fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    tabMontableau est une Structure
    	form est entier sur 4 octets
    	access est entier sans signe sur 4 octets
    	numElements est entier sur 4 octets
    	propDesc est un tableau fixe de 128 entiers
    FIN
    stMonArray est un tabMontableau
     
    POUR i = 1 _A_ stMonArray:numElements
    	Trace(stMonArray:propDesc[i])
    FIN
    Maintenant je n'arrive pas à comprendre le fonctionnement du Live View, faut t'il mettre un champs image ?

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    EdsError startLiveview(EdsCameraRef camera)
    {
    EdsError err = EDS_ERR_OK;
    // Get the output device for the live view image
    EdsUInt32 device;
    err = EdsGetPropertyData(camera, kEdsPropID_Evf_OutputDevice, 0 , , sizeof(device), &device );
    // PC live view starts by setting the PC as the output device for the live view image.
    if(err == EDS_ERR_OK)
    {
    device |= kEdsEvfOutputDevice_PC;
    err = EdsSetPropertyData(camera, kEdsPropID_Evf_OutputDevice, 0 , sizeof(device), &device);
    }
    // A property change event notification is issued from the camera if property settings are made successfully.
    // Start downloading of the live view image once the property change notification arrives.
    }
    EdsError downloadEvfData(EdsCameraRef camera)
    {
    EdsError err = EDS_ERR_OK;
    EdsStreamRef stream = NULL;
    EdsEvfImageRef = NULL;
    // Create memory stream.
    err = EdsCreateMemoryStream( 0, &stream);
    // Create EvfImageRef.
    if(err == EDS_ERR_OK)
    {
    err = EdsCreateEvfImageRef(stream, &evfImage);
    }
    // Download live view image data.
    if(err == EDS_ERR_OK)
    {
    err = EdsDownloadEvfImage(camera, evfImage);
    }
    // Get the incidental data of the image.
    if(err == EDS_ERR_OK)
    {
    // Get the zoom ratio
    EdsUInt32 zoom;
    EdsGetPropertyData(erfImage kEdsPropID_Evf_ZoomPosition, 0 , sizeof(zoom), &zoom);
    // Get the focus and zoom border position
    EdsPoint point;
    EdsGetPropertyData(erfImage kEdsPropID_Evf_ZoomPosition, 0 , sizeof(point), &point);
    }
    //
    // Display image
    //
    // Release stream
    if(stream != NULL)
    {
    EdsRelease(stream);
    Stream = NULL;
    }
    // Release evfImage
    if(evfImage != NULL)
    {
    EdsRelease(evfImage);
    evfImage = NULL;
    }
    }
    EdsError endLiveview(EdsCameraRef camera)
    {
    EdsError err = EDS_ERR_OK;
    // Get the output device for the live view image
    EdsUInt32 device;
    err = EdsGetPropertyData(camera, kEdsPropID_Evf_OutputDevice, 0 , , sizeof(device), &device );
    // PC live view ends if the PC is disconnected from the live view image output device.
    if(err == EDS_ERR_OK)
    {
    device &= ~kEdsEvfOutputDevice_PC;
    err = EdsSetPropertyData(camera, kEdsPropID_Evf_OutputDevice, 0 , sizeof(device), &device);
    }
    }

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/05/2008, 11h20
  2. Convertir Code C++ en asm
    Par Sharpy dans le forum C++
    Réponses: 7
    Dernier message: 02/11/2007, 23h37
  3. convertir code php en asp
    Par goaim dans le forum ASP
    Réponses: 1
    Dernier message: 19/10/2006, 15h53
  4. Convertir code C en delphi
    Par jt-tronix dans le forum Langage
    Réponses: 12
    Dernier message: 29/03/2006, 20h55
  5. convertir code clavier en caractère
    Par danyboy85 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 22/02/2006, 19h15

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