Functions!
Olá pessoal estou colocando uma função dentro de uma dll que me retorna 3 valores so que esta dando erro acho q seja algo relacionado com as variaveis pq para retornar 3 valores acho eu que eu tenha que enviar as variaveis de retorno dentrentro dos parametros da funcao, quando eu fecho o programa da erro de invalid pointer operation, acho q seja algo simples se alguem puder me ajudar... obrigadoo..
Título editado conforme as regras de conduta. Favor não apelar e somente descrever o problema (Zoom)
Título editado conforme as regras de conduta. Favor não apelar e somente descrever o problema (Zoom)
Zacca
Curtidas 0
Respostas
Macario
02/09/2003
colega nos passe um trecho da funçaõ
GOSTEI 0
Zacca
02/09/2003
function Divide(str:string;var ini:string;var fim:string;var meio:string):string;
var
tini,tfim,i:integer;
begin
ini:=´´;
meio:=´´;
fim:=´´;
for i:= 1 to Length(str) do
begin
if pos(str[i],´ ´) > 0 then begin
tini:=pos(str[i],´ ´);
//ShowMessage(´str ´+ini+´ tamanho ´+inttostr(tini));
Break;
end;
ini:=ini+str[i];
end;
for i:= length(str) downto 0 do
begin
if pos(str[i],´ ´) > 0 then begin
tfim:=pos(str[i],´ ´);
//ShowMessage(´str ´+fim+´ tamanho ´+inttostr(tfim));
Break;
end;
fim:=str[i]+fim;
end;
{meio1:=length(ini)+1;
meio2:=length(str)-length(fim);}
for i:=length(ini)+1 to length(str)-length(fim) do
begin
meio:=meio+str[i];
end;
end;
cara o problema é o retorno do ´meio´ acho q seja isso... pq quando eu tiro o for do ´meio´ nao da erro nenhum....
GOSTEI 0
Zacca
02/09/2003
Olá pessoal estou colocando uma função dentro de uma dll que me retorna 3 valores so que esta dando erro acho q seja algo relacionado com as variaveis pq para retornar 3 valores acho eu que eu tenha que enviar as variaveis de retorno dentrentro dos parametros da funcao, quando eu fecho o programa da erro de invalid pointer operation, acho q seja algo simples se alguem puder me ajudar... obrigadoo..
GOSTEI 0
Marcelo Saviski
02/09/2003
se o erro for no for do ´meio´ tnta então triocar esse for por um Copy:
trocar:
por:
Algo assim
trocar:
for i:=length(ini)+1 to length(str)-length(fim) do begin meio:=meio+str[i]; end;
por:
meio := Copy(str, length(ini)+1, length(str)-length(fim) - length(ini)+1);
Algo assim
GOSTEI 0
Zacca
02/09/2003
vou testar colocar o copy mas é que eu chamo as funcoes em um loop parece que o erro é por este motivo tem alguma coisa a ver..?/
GOSTEI 0
Marcelo Saviski
02/09/2003
vou testar colocar o copy mas é que eu chamo as funcoes em um loop parece que o erro é por este motivo tem alguma coisa a ver..?/
até pode, se você tentar acessar um indice válido, tipo str[-150], ou algo assim, mas acho que isso não ocorre na sua function
GOSTEI 0
Allen74
02/09/2003
zacca,
A passagem de parâmetros como var para DLLs não é recomendada porque a DLL e seu programa não compartilham a mesma área de memória. Não sei se com a utilização da unit ShareMem da borland (mais informações no help do Delphi) poderia resolver este problema (se é que você já não está utilizando).
O mais indicado seria utilizar PChar como parâmetro para a função.
Consulte estes artigo para saber maiores detalhes sobre a criação de DLLs com o delphi:
http://www.avdf.com/aug95/delf_dll1.html
http://www.avdf.com/aug95/delf_dll2.html
Dentro do segundo artigo, este trata mais especificamente das strings:
http://www.avdf.com/aug95/samp2_dll2.html
Um bom artigo em português, mais atualizado na questão das strings:
http://www.cristianok.hpg.ig.com.br/art2/
A passagem de parâmetros como var para DLLs não é recomendada porque a DLL e seu programa não compartilham a mesma área de memória. Não sei se com a utilização da unit ShareMem da borland (mais informações no help do Delphi) poderia resolver este problema (se é que você já não está utilizando).
O mais indicado seria utilizar PChar como parâmetro para a função.
Consulte estes artigo para saber maiores detalhes sobre a criação de DLLs com o delphi:
http://www.avdf.com/aug95/delf_dll1.html
http://www.avdf.com/aug95/delf_dll2.html
Dentro do segundo artigo, este trata mais especificamente das strings:
http://www.avdf.com/aug95/samp2_dll2.html
Um bom artigo em português, mais atualizado na questão das strings:
http://www.cristianok.hpg.ig.com.br/art2/
GOSTEI 0