Res: [delphi-br] Ponteiro - Ajuda

2008-10-30 Por tôpico Andresa Ferreira
Oi João... Muito, muito obrigada.

A propriedade FechtAll da query estava false, por isso ele dava erro.

Valeu.
Andresa





De: Joao Morais <[EMAIL PROTECTED]>
Para: delphi-br@yahoogrupos.com.br
Enviadas: Quarta-feira, 29 de Outubro de 2008 13:49:27
Assunto: Re: [delphi-br] Ponteiro - Ajuda


2008/10/29 Andresa Ferreira :
> Oi João.
>
> Então, eu uso delphi7 e não achei a opçao Debug Units, porém achei Debug DCUs.
> Qdo dei CTRL+F3 apareceu a mensagem anexa.

A lista não aceita anexos. Passa um link com a imagem ou transcreve o
local aonde o código parou.

Estive analisando um pouco mais detalhadamente seu código, você
utiliza SetLength com base em um RecordCount. Quem te garante que o
recordcount retornou a quantidade correta de registros? Se você tentar
acessar um elemento além do tamanho do array, você terá um AV também.
Execute a rotina passo a passo (coloque um breakpoint no setlength) e
veja se ao menos a sua rotina chega até o fim, do contrário, diga qual
foi a linha em que ela parou.

> Sabe João, eu nunca tinha usado ponteiros antes, e não tô gostando 
> srsrssrrs... . Teria
> um meio de eu fazer esse processo sem usar ponteiros??? ?

Eu acho que não. Você poderia usar objetos, mas teria que se preocupar
em alocar e desalocar da mesma forma.

Joao Morais
 


  Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua 
cara @ymail.com ou @rocketmail.com.
http://br.new.mail.yahoo.com/addresses

[As partes desta mensagem que não continham texto foram removidas]



Res: [delphi-br] Ponteiro - Ajuda

2008-10-29 Por tôpico Andresa Ferreira
Oi João

Então, eu uso delphi7 e não achei a opçao Debug Units, porém achei Debug DCUs. 
Qdo dei CTRL+F3 apareceu a mensagem anexa.

Sabe João, eu nunca tinha usado ponteiros antes, e não tô gostando 
srsrssrrs Teria um meio de eu fazer esse processo sem usar ponteiros

Preciso muito finalizar esse menu.

Grata,
Andresa





De: Joao Morais <[EMAIL PROTECTED]>
Para: delphi-br@yahoogrupos.com.br
Enviadas: Terça-feira, 28 de Outubro de 2008 18:34:02
Assunto: Re: [delphi-br] Ponteiro - Ajuda


2008/10/28 Andresa Ferreira :
> Oi João.
>
> Mas o que eu devo fazer
> Coloquei o Dispose no final do processo, mas ocorre o mesmo problema.
>
> Não sei mais o que fazer...
>
> Me ajuda ;)

Ligue as informações de debug do seu projeto. Vá também em Project |
Options | Compiler | ligue Use Debug Units. Dê um build all.

Logo que o erro ocorrer, vá até a IDE e pressione Ctrl+F3. Se você
tiver sorte, irá parar no ponto exato em que ocorreu a exceção. Isso
pode te dar uma pista. Usar FastMM com FullDebugMode habilitado
aumentam suas chances.

Com esta informação você terá uma pista do que é, e por consequência
do que você terá que fazer.

Joao Morais
 


  Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua 
cara @ymail.com ou @rocketmail.com.
http://br.new.mail.yahoo.com/addresses

[As partes desta mensagem que não continham texto foram removidas]



Res: [delphi-br] Ponteiro - Ajuda

2008-10-28 Por tôpico Andresa Ferreira
Oi João.

Mas o que eu devo fazer
Coloquei o Dispose no final do processo, mas ocorre o mesmo problema.

Não sei mais o que fazer...

Me ajuda ;)

Andresa





De: Joao Morais <[EMAIL PROTECTED]>
Para: delphi-br@yahoogrupos.com.br
Enviadas: Terça-feira, 28 de Outubro de 2008 14:08:35
Assunto: Re: [delphi-br] Ponteiro - Ajuda


2008/10/28 Andresa Ferreira :
> Bom dia a todos.

Boa tarde,

> ... depois começou dar access violation,
>
> Código:
> TMenu = Record
> iId_Nivel: Integer;
> sDs_Opcao: String;
> iId_Nivel_Ch: Integer;
> // sNm_Form: String;
> end;
> pMenu = ^TMenu;

Saudade de ponteiros.

> ...
> While not All_QryAux.Eof do
> begin
> New(Menu);
> Menu^.iId_Nivel := All_QryAux.FieldByN ame('ID_NIVEL' ).AsInteger;
> Menu^.sDs_Opcao := All_QryAux.FieldByN ame('DS_OPCAO' ).AsString;
> Menu^.iId_Nivel_ Ch := All_QryAux.FieldByN ame('ID_NIVEL_ CHAMAR'). AsInteger;
> // Menu^.sNm_Form := All_QryAux.FieldByN ame('NM_FORM' ).AsString;
> sTexto := Trim(All_QryAux. FieldByName( 'DS_OPCAO' ).AsString) ;
> If All_QryAux.FieldByN ame('ID_NIVEL' ).AsInteger = 1 then
> aNode[i]:= tvMenu.Items. AddObject( Nil, sTexto, Menu)
> else
> begin
> tnInd := IndiceHie(Menu) ;
> aNode[i] := tvMenu.Items.. AddChildObject( tnInd, sTexto, Menu);
> end;
> Inc(i);
> All_QryAux..Next;
> Dispose(Menu) ;

Não olhei detalhes do código, mas esse dispose tá estranho. Você está
liberando memória e mantém uma referência para ela atravês do
treeview. O treeview não vai tirar uma cópia dos dados, mas manter um
ponteiro à área que você alocou. Você tem que dar dispose só depois de
não precisar mais dessa área.

A propósito, quando trabalhar com alocação dinâmica, procure manter um
gerenciador de memória ativo e em modo debug. Ele apresenta a você
tanto corrupção quanto vazamentos.

Joao Morais
 


  Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua 
cara @ymail.com ou @rocketmail.com.
http://br.new.mail.yahoo.com/addresses

[As partes desta mensagem que não continham texto foram removidas]