Erro na DLL que criei...e agora ???

21/02/2003

0

Eu criei a Dll abaixo para formatar campos de data. Alguém saberia me dizer porque quando eu coloca 4 ou 5 caracteres no campo que eu quero formatar ele dá. Invalid Pointer Operation. Porém seu eu colocar qualquer outra quantidade de caracteres, funciona perfeitamente.

library Util;
uses
SysUtils,
Classes;
{$R *.res}

Function Datar(Texto : string):string; export;
Var
i:integer;
Texto_f, comp, temp : string;
Begin
comp := DateToStr(Date);
If (Texto <> ´´) then
Begin
For i := 1 to Length(Texto) do //retira as barras da string
If (Texto[i] <> ´/´) then
Texto_f := Texto_f + Texto[i];
For i := 1 to Length(Texto_f) do
Begin
If (i = 3) or (i = 5) then

temp := temp + ´/´;
Temp := Temp + Texto_f[i];
End;
If Length(Temp) < 11 then
For i:= (length(Temp) + 1) to 11 do
Temp := Temp + comp[i];
End;
Result := Temp;
end;
exports
Datar;
begin
end.
:shock:


Anderson.oberdan

Anderson.oberdan

Responder

Posts

21/02/2003

Fabioastra

na hora de enviar o parametro para a dll tente converte-lo para pchar
Pchar(parametro) e na função declare como pchar tb provavelmente funcionará

Falow


Responder

21/02/2003

Anderson.oberdan

O erro desapareceu, porém com ele também se foi meu resultado, ou seja, agora a função não retorna nada.

Eu mudei todas as declarações de String para Pchar.


Responder

21/02/2003

Anderson.oberdan

Valeu amigo deu certo agora, é que eu tinha mudado o cabeçalho da função apenas na dll e não no projeto.

Abraços.


Responder

21/02/2003

Alphablend

For i := 1 to Length(Texto_f) do
Begin
If (i = 3) or (i = 5) then <<== o erro esta aki

temp := temp + ´/´;
Temp := Temp + Texto_f[i]; <<== NAUM DEVERIA TER UM ELSE AKI
End;


========================
FICARIA ASSIM !!!!!!

For i := 1 to Length(Texto_f) do
Begin

If (i = 3) or (i = 5) then
temp := temp + ´/´
ELSE
Temp := Temp + Texto_f[i];

End;


FALOU !!!!!!!


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar