Ir para conteúdo
Fórum Script Brasil
  • 0

Access Violation At Address..


Vraptor

Pergunta

E ai pessoal.

Estou penando para trabalhar com matrizes.

Vejam bem:

Tenho uma classe e sua propriedade tem de ser uma matriz.

class Cartela_Montada

{

public:

AnsiString Monta_Dezenas ( );

bool Verifica_Igualdade ( AnsiString );

bool Verifica_Linhas ( );

bool Verifica_Colunas ( );

void Inclue_Cartelas ( );

void Limpa ( );

private:

vector<AnsiString> mtDezenasMontadas;

vector<AnsiString>::iterator PonteiroVetor;

};

Cartela_Montada *Cartela;

Quando vou trabalhar com a matriz tenho a menssagem de erro:

Access violation at address..

Read of address 00000010.

Qualquer referência que faço a esse vetor dá pau.

for ( PonteiroVetor = mtDezenasMontadas.begin() ;

PonteiroVetor != mtDezenasMontadas.end() ;

PonteiroVetor++ )...Tilt !!

outra..

for ( unsigned int Ponteiro = 0 ;

Ponteiro < mtDezenasMontadas.size() ;

Ponteiro++ )...Tilt !!

Outra estrutura.

{

public:

AnsiString Monta_Dezenas ( );

bool Verifica_Igualdade ( AnsiString );

bool Verifica_Linhas ( );

bool Verifica_Colunas ( );

void Inclue_Cartelas ( );

void Limpa ( );

private:

struct Dados

{

AnsiString Elemento;

} mtDezenasMontadas[50]

};

...

...

if ( mtDezenasMontadas[ Ponteiro ].Elemento == " " )

...Tilt.

Não sei porque está dando esse erro de memória.

Por favor alguém poderia dar uma mãozinha.

Abraços, Daniel..

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Não estaria faltando inicializar os objetos do vetor? Ou seja, criar os objetos antes de tentar acessá-los?

Veja se o seguinte exemplo funciona aí:

#include <iostream>
#include <stdlib.h>
#include <string>
#include <vector>

using namespace std;

int main() {
    vector<string> palavras;
    vector<string>::iterator palavra;
    
    palavras.push_back(string("isto"));
    palavras.push_back(string("é"));
    palavras.push_back(string("um"));
    palavras.push_back(string("teste!"));
    
    for ( palavra = palavras.begin(); palavra != palavras.end(); palavra++ )
    {
        cout << *palavra << endl;
    }
    system("pause");
}

E onde você arrumou essa AnsiString? Não achei aqui no Dev-C++, por isso fiz com strings normais de C++.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

E ai Graymalkin.

AnsiString é um tipo de string criado para o ambiente Buider da Borland.

Possui métodos bem semelhantes a classe string da STL.

AnsiString Monta_Dezenas ( );

Este método cria uma dezena aleatória e a retorna convertida para um tipo AnsiString.

bool Verifica_Igualdade ( AnsiString );

Este verifica se existe alguma dezena dentro do vetor ou matriz igual a que foi gerada,

se for true é que a inclusão da nova dezena foi feita com sucesso.

E também é ai que a porca torce o rabo !!

Logo posto o resultado de sua sujestão.

Abraços, Daniel.

Link para o comentário
Compartilhar em outros sites

  • 0

Isso é para pirar..devia ter ficado no VB.....

Veja bem:

Tentei verificar a existencia de algum elemento dentro do vetor e ele já dá o erro:

if (mtDezenasMontadas.size() == 0 )

ShowMessage(" Este vetor está com vazio");

else

ShowMessage("Este vetor não está vázio !");

//----

Outra tentativa.

Tentei fazer a inclusão logo na primeira dezena montada:

mtDezenasMontadas.push_back( AnsiString( "01" ) );

Infelizmente o mesmo erro.

Se for alguma coisa errada com meu código vou postar aqui.

Abraços, agradeço a colaboração.

Daniel.

Link para o comentário
Compartilhar em outros sites

  • 0

Cara achei o pepino. PARECE BRINCADEIRA !!! <_<

É a tal falta de pratica no ambiente. :(

No Builder quando é instanciado um Form este é referênciado... Classe * Objeto.

Acesso:

Objeto->Componente->Propriedades = ......... //JANELA, COMPONENTES GRÁFICOS E ETC....

Segui a mesma lôgica para criar meu objeto.

Ou seja.

Objeto->Método().

Acontece que quando tento manipular um dado membro "DENTRO DE UMA FUNÇÃO MEMBRO " ele dá o tal erro de acesso violado.. :blink: :huh:

Agora a noite que os cabelos tinhão parado de cair.. :D

instânciei o Ojeto normalmente sem referência-lo.

Classe Objeto.

Acesso:

Objeto.Método().

Tudo a mil maravilhas. :rolleyes:

Não sei o porque disto, se voçê tiver alguma dica fico muito agradecido. :ph34r:

Abraços a todos, Daniel. ;)

Link para o comentário
Compartilhar em outros sites

  • 0

Não sei se entendi bem qual foi a sua solução, mas quando você declara um objeto assim...

Classe *Objeto;
... você tem que utilizar o operador -> para fazer referência aos membros. Já quando é...
Class Objeto;

... você tem que utilizar o ponto (.) mesmo. Mas, geralmente, o compilador te avisa sobre isso.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...