Osvaldo,

Aparentemente está correto. Mas segue mais algumas dicas:

1) Toda vez que for executar a função lembre-se de alocar memória para os Strings!!! É estranho mais é verdade, para C todo string é apenas um endereço, se não houver alocação de memória não haverá retorno/passagem de informação. Para isso utilize a função SalStrSetBufferLength. Exemplo:

Function: RegEnumKeyExA
    Description:
    Export Ordinal: 0
    Returns
        Number: LONG
    Parameters
        Number: LONG
        Number: DWORD
        String: LPSTR
        Receive Number: LPDWORD
        String: LPVOID
        String: LPSTR
        Receive Number: LPDWORD
        structPointer
            Receive Number: DWORD
            Receive Number: DWORD

Call SalStrSetBufferLength( Arr, len )
Call RegEnumKeyExA( m_CurrentKey,
        n, Arr, len, STRING_Null, STRING_Null, Class,
        LastWriteTime1, LastWriteTime2 )


2) Olhando alguns exemplos do próprio Centura, muitas vezes eles declaram como Receive, como o exemplo acima, não sei se é o seu caso.

Sds,
Erasmo

Osvaldo wrote:
Bom dia,
    Fernando
        Tudo bem?
 
    Bom dia Lista
 
    Obrigado pelas respostas, mas eu ainda tenho duvidas quanto em como posso declarar a minha estrutura da DLL em C no Centura, eu estou fazendo desta maneira:
 
        Minha estrutura na DLL em C
 
typedef struct      

 short a;
 short b;
 short c;
 short d;
 BSTR e;     
 BSTR f;    //CString
 BSTR g;    //CString
 BSTR h;    //CString
 BSTR i;     //CString
 BSTR j;
 
 
        Declaração da estrutura em C no Centura
 
!!CB!! 86
structPointer
 Number: SHORT
 Number: SHORT
 Number: SHORT
 Number: SHORT
 String: LPSTR
 String: LPSTR
 String: LPSTR
 String: LPSTR
 String: LPSTR
 String: LPSTR
 
        Esta certo esta declaração?
            Eu ainda não consigo retornar os valores do C para o Centura
                                                                                                        Obrigado
                                                                                                                    []´s
----- Original Message -----
Sent: Friday, March 17, 2006 4:36 PM
Subject: RES: [sqlwin] CStruct

Osvaldo, segue uma documentação.
Vc vai achar mais alguma coisa no books On-line. Basicamente é receber a posicao de memória do ponteiro e usar as funções get da CStruc pra acessar essa posicao de memória.
-----Mensagem original-----
De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]Em nome de Osvaldo
Enviada em: sexta-feira, 17 de março de 2006 16:15
Para: [email protected]; Paulo Sérgio Travaglia
Assunto: [sqlwin] CStruct

Ola lista
    Como eu posso fazer para usar o CStruct
 
    No meu caso em especifico eu tenho um programa em Centura que tem que passar e receber argumentos de uma dll em C, e o parâmetro da função da dll em C e uma struct em C composta por int e BSTR
 
            Alguém sabe como passar uma estrutura do Centura para o C?
 
                                                                                            []´s

Osvaldo Silvio Furlaneto Neto
Consultor
( + 55 11 4195-5535


----------------------------------------------------------

Esta mensagem e seus anexos podem conter informações confidenciais ou privilegiadas. Se você não é o destinatário dos mesmos você não está autorizado a utilizar o material para qualquer fim. Solicitamos que você apague a mensagem e avise imediatamente ao remetente. O conteúdo desta mensagem e seus anexos não representam necessariamente a opinião e a intenção da empresa, não implicando em qualquer obrigação ou responsabilidade por parte da mesma.

This message may contain confidential and/or privileged information. If you are not the addressee or authorized to receive this for the addressee, you must not use, copy, disclose or take any action based on this message or any information herein. If you have received this message in error, please advise the sender immediately by reply e-mail and delete this message. The contents of this message and its attachments do not necessarily express the opinion or the intention of the company, and do not implies any legal obligation or responsabilities from this company.

----------------------------------------------------------



-- 

Erasmo Bispo de Oliveira Junior
Gerente de Pesquisa e Desenvolvimento
Softway - Softcomex Informática Ltda.
Pabx:   +55 (19) 3739.9200
Direto: +55 (19) 3739.9361
Fax:    +55 (19) 3739.9240
e-mail: [EMAIL PROTECTED]
web:    http://www.softcomex.com.br


Responder a