Fórum ddl´s usar pchar, sortstring ou string #152773

08/04/2003

0

Não sou bom conhecedor de Dll´s, por isso recorro ao forum.
Tenho uma função para construção de clausula sql. Quando eu a uso em uma unit no projeto tudo ok. Eu quero passa-la para uma DLL. Como eu faço com os parametros ´String´. Abaixo o cabeçalho da função, se alguem puder me ajudar ou indicar-me algum material (Que seja bem exclarecedor), agradecerei muito.

function BuildSQL(campos, valores, opers : Array of String; QtdCampos : Integer; DS : TQuery): String;

Alexandre Paganato

Favor postar o título em minúsculas
Moderador


Paganato

Paganato

Responder

Posts

08/04/2003

E_gama

Quando se escreve uma DLL, eh de costume utilizar, ao inves de [b:e79201e51e]string[/b:e79201e51e], utilizar [b:e79201e51e]PChar[/b:e79201e51e]. Voce ateh pode utilizar o primeiro tipo, mas deve seguir as recomendacoes que vem escritas quando voce cria um novo projeto de DLL.

So para relembrar:
library Project1;

{ Important note about DLL memory management: ShareMem must be the
  first unit in your library´s USES clause AND your project´s (select
  Project-View Source) USES clause if your DLL exports any procedures or
  functions that pass strings as parameters or function results. This
  applies to all strings passed to and from your DLL--even those that
  are nested in records and classes. ShareMem is the interface unit to
  the BORLNDMM.DLL shared memory manager, which must be deployed along
  with your DLL. To avoid using BORLNDMM.DLL, pass string information
  using PChar or ShortString parameters. }

uses
  SysUtils,
  Classes;

{$R *.RES}

begin
end.


Mesmo assim, eh melhor utilizar PChar, e utilizar as funcoes de conversao [b:e79201e51e]string->PChar->string[/b:e79201e51e] do delphi:

exemplo de conversao:

function PassaPChar(Prm: PChar): PChar;
var str: string;
begin
  str := ´Parametro recebido: ´ + StrPas(Prm);
  Result := PChar(str);
end;

var Teste1, Teste2: string;
    Teste3: PChar;
begin
  Teste1 := ´Teste de Parametros´;
  Teste3 := PassPChar(PChar(Teste1));
  Teste2 := StrPas(Teste3);
end;



Responder

Gostei + 0

08/04/2003

Paganato

Quanto a minha função para a criação de SQL, posso (ou existe uma forma) utilizar um ARRAY de PCHAR.
Como posso resolver este problema?


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar