Res: [delphi-br] Ponteiro - Ajuda
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
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
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]