Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Paulo Daneu

C + Mysql (GCC) warning: assignment makes integer from pointer without

Recommended Posts

Pessoal,

 

Estou pedindo ajuda, tenho que dar um restart no meu cerebo. Sou um dinossauro em C, mas fazem uns 15 anos que não programo.

 

Meu problema é o seguinte eu preciso acessar um banco de dados linha a linha e transferir o resultado dos campos para uma variavel.

Mas na compilação recebo "warning: assignment makes integer from pointer without a cast" já li um kg de paginas na internet que não me deram uma luz.

 

O basico é o seguinte:

.

.

int inclui;

int posicao;

int t[256] = {0}; <- já tentei com int *t;

.

MYSQL_ROW row;

.

.
inclui = 0;
posicao = y +1;
if (mysql_query(con, "SELECT * FROM co WHERE pos=posicao"))
{
finish_with_error(con);
}
result = mysql_store_result(con);
if (result == NULL)
{
finish_with_error(con);
}
row = mysql_fetch_row(result);
for(xx = 1; xx <=10 ; xx++) <- xx = 0 não interessa
{
t[inclui] = row[xx]; <- aqui acontece o erro

 

 

Estou usando o freebsd versão 8.

 

Abraços,

 

Paulo

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ai dinossauro, tente isso:

 

 

t[inclui] = (int)row[xx];
ou
t[inclui] = (int*)row[xx];

só uma dúvida, não tenho costume de usar DB quando programo em C++.

 

mas não deveria estar assim?

 

for(xx = 1; xx <=10 ; xx++)                   <- xx = 0 não interessa
{
t[xx] = row[0];     
}

 

 

o row[0] iria pegar o valor da primeira coluna da tabela, o que acontece é que geralmente o primeiro valor é inteiro(id). porisso o warnning. me corrija-me se estiver falando besteira.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá TalissonBento,

 

 

Sua ajuda foi importante e ajudou muito, no final usei um outro macete para agilizar o programa.

Realmente você tem razão a primeira coluna tem o valor inteiro que não me interessa e é usada apenas como index no meu caso.

 

Sabe, eu nunca usei C++, sempre C e Assembler, cheguei a programa em assembler contando ciclos de clock, como meu forte era firmware, devices drivers, etc. elas eram a mais importantes.

 

Então, eu estou fazendo um programa que irá verificar 112^10 vezes, eu tenho uma tabela com 112 registros e irá gerar uma segunda com N registros de acordo com as condições colocadas.

 

Eu já tenho esse programa em PHP, mas para o que eu preciso é muito lento, tem que levar em condição que meu servidor é um pentium IV 2.26ghz com 1gb de memória. Estou usando o FreeBSD que é mais perto do Unix, apesar de eu estar remando contra a maré em relação ao Linux.

 

Hoje eu terminei a parte do programa em que ele lê os dados até o ultimo loop, mas sem gravar sendo apenas para teste. E para minha surpresa o programa está funcional, mas consome toda a memória parando o processo com OUT OF MEMORY sendo que as variaveis foram declaradas com tamanho definido e no final de cada loop eu uso mysql_free_result() e não adianta nada.

 

Abraço,

 

Paulo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verificou se vc está desalocando a memoria dos ponteiros?

 

 

delete ptr;//prara ponteiro simples
delete [] ptr; // para vetor de ponteiro.

 

 

Tive um problema parecido em um projeto que criei um servidor socket, a cada cliente que conectava eu estavva criando um instancia com informaçoes sobre e não desalocava depois, e o servidor era acessado por página feita em PHP, vc imagina quantas conexoes tinha por hora. depois de revisar o codigo, desaloquei as variveis certas e resolveu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bento,

 

Eu consegui resolver, as variáveis que eu uso estou desalocando corretamente.

O que eu não estava fazendo correto era o uso da função mysql_free_result()da biblioteca do mysql.

Agora estou vendo o resultado na tela e vou para a ultima fase que é salvar o que preciso.

 

O PHP é muito mais fácil de usar, o problema é que sempre a interpretação de scripts é lenta e quando o volume é grande a coisa piora.

 

Mudando, eu tinha uma biblioteca de uns 200 volumes sobre C, Assembler e sistemas operacionais incluindo os manuais de Xenix e dois de SCO Unix. Na minha família não tinha ninguém que se interessou por informática até uns 6 anos atrás, aí um sobrinho resolveu ir para essa área e dei para ele toda minha biblioteca, no primeiro ano de faculdade ele desistiu e foi fazer economia e os livros que dei, ele deixou num porão cheio de cupins. Fui pegar de volta e os cupins tinham comido tudo.

 

O duro é que não eram livros sazonais e sim conceituais, tirando os manuais de SCO, mas mesmo estes são válidos até hoje. Eu tinha muito livros sobre algoritmos, etc. Me lembro que eu tinha um livro de 195x que é valido até hoje.

 

Eu ainda tenho uma versão do SCO Unix, mas a literatura está em cd e o diskette de boot está com pau. Comprei no inicio de 2000.

Um detalhe, junto com esses sistemas operacionais comprei também os sistemas de desenvolvimento e me ajudaram muito a desenvolver devices drivers.

E agora só a internet, muita coisa válida e muita coisa que não ajuda.

 

Abraço e obrigado pelo help inicial

 

Paulo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.