
kuroi
Membros-
Total de itens
7.184 -
Registro em
-
Última visita
Tudo que kuroi postou
-
valeu douplus. mas então... eu sei q ooo->item não é destruido e q eu posso usa-lo. esse não era meu problema desde o comeco, se fosse isso o meu codigo do malloc taria funcionando e eu nem teria aberto o tópico. eu nem ia ter percebido q o destructor tava sendo chamado. meu problema é q: o meu problema é aquela propriedade highlight_img do tipo SDL_Surface*, alem de outras tres propriedades desse tipo q eu já inclui na classe. talvez isso não tenha ficado claro, porque você deve ter pensado q eu ainda tava usando a classe opcao com a estrutura q ta no outro tópico (q não tem nd no destructor). mas na verdade, eu to fazendo um novo projeto usando esse mesma classe, mas foram feitas alteracoes nela. atualmente esta assim: class opcao { public : area* Area; //Área da tela onde está a opção. public : opcao* Baixo; //Para qual opção irá ao ser pressionado para baixo. public : opcao* Cima; //Para qual opção irá ao ser pressionado para cima. public : opcao* Esquerda; //Para qual opção irá ao ser pressionado para a esquerda. public : opcao* Direita; //Para qual opção irá ao ser pressionado para a direita. public : SDL_Surface* img; //Imagem da opção. public : SDL_Surface* highlight_img; //Imagem de highlight. public : SDL_Surface* clique_img; //Imagem quando a opção for clicada. public : SDL_Surface* inativa_img; //Imagem quando estiver inativa. public : E_Eventos ev_mousedown; public : E_Eventos ev_mouseup; public : bool Ativo; public : opcao(area* ax, SDL_Surface* im, SDL_Surface* h, SDL_Surface* c, SDL_Surface* in) { Area = ax; Ativo = true; img = im; highlight_img = h; clique_img = c; inativa_img = in; ev_mousedown = EV_NENHUM; ev_mouseup = EV_NENHUM; Baixo = NULL; Cima = NULL; Esquerda = NULL; Direita = NULL; } ~opcao() { if (img != NULL) SDL_FreeSurface(img); if (highlight_img != NULL) SDL_FreeSurface(highlight_img); if (clique_img != NULL) SDL_FreeSurface(clique_img); if (inativa_img != NULL) SDL_FreeSurface(inativa_img); }; };[/code] o problema é q na hora q o destructor é chamado, ele desaloca o espaco dos SDL_Surfaces. os enderecos dos SDL_Surfaces q serao copiados para o espaco alocado do objeto opcao são os mesmos q serao passados para o constructor e os mesmos q serao desalocados no destructor. então eu vou perder meus SDL_Surfaces se o destructor for chamado. eu poderia em vez de armazenar o pontero do SDL_Surface, q eu armazenasse o proprio SDL_Surface dentro da classe. e ai eu teria q desalocar os espacos no programa principal depois de passa-los ao objeto ou ainda destrui-los dentro do proprio constructor (porque os SDL_Surfaces são carregados com a funcao IMG_Load() do sdl, q aloca o espaco para a imagem e retorna o pontero. então querendo ou não, eu vou ter q chamar o SDL_FreeSurface() em algum momento). mas se for pra fazer isso, prefiro seguir a ideia da minha opcao 3 no post mais acima. alem do mais, pelo q eu entendi do processo, quando eu to chamando o new, ele ta instanciando o objeto num endereco de memoria temporario qualquer e chamando o constructor. depois ele copia todo o objeto já inicializado para o endereco alocado pelo new e destroi o objeto temporario. ou seja, eu to perdendo tempo copiando o objeto todo, coisa q poderia ser evitada. hum, não sei se isso vai ter otra solucao, mas de qualquer forma valeu pela ajuda ate ai, deu pra aprender umas coisas novas.
-
acho q seria isso: CRITERIO = "{TABELA.frutas} = '" & ITEM1 & "' Or {TABELA.frutas} = '" & ITEM2 & "'"
-
não funciona:
-
valeu douplus. mas então, esse "<-- não FUNCIONA" q ficou no codigo é so porque você esqueceu de apagar o comentario q eu deixei ou é porque não funciona mesmo?? porque realmente não ta funcionando hehe então, primera coisa q por algum motivo, ele não aceita o new a não ser q eu crie um construtor sem parametros pra classe opcao. senao ele da essa mensagem: e aponta pra linha: lista_ligada(T info) { e outra coisa é q, se eu crio o constuctor sem parametros, o new (com parametros) funciona certinho. entretanto, o destructor é chamado logo depois do constructor, como sempre. mas legal esse codigo q você passou. aquilo é como criar um construtor para a struct, não sabia q dava pra fazer isso. sera então q o jeito vai ser eu seguir aquela opcao 3 de q eu falei?? valeu pela ajuda ate aqui.
-
nesse tutorial aqui você pode ver como abrir arquivos pra leitura e edicao: http://www.macoratti.net/txt_arqs.htm você tb pode usar a biblioteca FileSystemObject. qualquer duvida q você tiver vai postando ai.
-
sadjuan, nesse tópico aqui: http://scriptbrasil.com.br/forum/index.php?showtopic=108733 eu ensino como faz isso exatamente como você quer no visual basic 6, e abaixo postaram uma conversao pra .net (olhe o post do anubis).
-
isso aí é visual basic .net, vou mover pra area correta.
-
com esse componente, você consegue fazer isso: http://www.graymalkinsoftware.net/gspagina...age=Py.Sendmail
-
valeu douplus, entendi o q acontece. mas o problema do meu otro tópico ainda permanece. agora eu descobri q não posso usar o malloc, senao ele chama o destrutor (q vai desalocar espacos q eu aloquei dentro da classe, o q vai impedir o objeto de funcionar corretamente). e eu não consigo usar o new porque ele espera q eu passe parametros q eu não tenho como passar: ooo = new lista_ligada<opcao>; não posso usar esse codigo porque o constructor da classe opcao espera parametros. se existir um modo de passar os parametros nessa linha resolveria, mas não encontrei como fazer isso. e mesmo se eu fizesse um constructor sem parametros, logo depois eu teria q chamar o constructor q possui os parametros. alem de ser perda de tempo chamar dois constructors, isso não resolveria nd, porque quando eu chamasse o constructor a segunda vez, ele deve chamar tb o destructor e o meu problema continuaria. bom, levando isso em conta, vejo duas opcoes pra mim: 1 - usar um construtor sem parametros e, na hora de inserir o item na lista, eu alteraria as propriedades dele na mao no lugar do constructor antigo, o q é uma coisa q não quero fazer de jeito nenhum. 2 - descartaria essa struct da lista ligada q criei q aceita qualquer tipo e teria q fazer uma classe lista pra cada objeto q eu for usar com a lista, e fazer um construct nessa classe lista identico ao construct do objeto relacionado a ela. assim, eu passaria os parametros para a lista ligada q passaria para o objeto. o q tb é uma coisa q não me anima nd fazer. alguém tem uma ideia melhor?? valeu. EDITADO: pensei numa terceria opcao aqui: 3 - em vez de armazenar o objeto dentro da lista ligada, eu armazenaria o pontero dele. acho q isso resolveria tudo sem estragar a programacao. mas se tiverem otras ideias ou algum comentario, postem ai. valeu.
-
isso no dev c++. porque quando aloco a memoria para o objeto, ele chama o destructor logo em seguida ao constuctor?? exemplo, se eu tenho essa classe: class minha_classe { public : minha_classe() { printf("1"); } ~minha_classe() { printf("\ndestrutor\n"); } };[/code] agora, imagine q eu faca isso: [code]int main() { minha_classe x = minha_classe(); printf("2"); return 0; } o meu retorno esta sendo o seguinte: isso esta certinho, ele so chama o destrutor na hora q o programa fecha. agora imagine q eu faca isso: int main(int argc, char* args[]) { minha_classe* x; x = (minha_classe*)malloc(sizeof(minha_classe)); *x = minha_classe(); printf("2"); delete x; return 0; }[/code] o retorno é esse: ou seja, isso significa q o destrutor esta sendo chamado duas vezes. a primera, logo depois do construtor, e a segunda, no delete. qual é o sentido de ele ser chamado junto com o construtor?? era pra ser normal?? com o new, não tenho esse problema. entretanto, não queria usar o new por q com ele eu estava tendo outro problema, q foi discutido nesse tópico aqui: http://scriptbrasil.com.br/forum/index.php?showtopic=142460
-
baixe o istool. ele é um wizard para o innosetup. com ele você pode criar os instaladores sem precisar conhecer a linguagem.
-
Erro no código para visualizar dados no crystal.
pergunta respondeu ao mfecosta de kuroi em Visual Basic
e esses dados q foram digitados são gravados no banco de dados, ou você quer passar esses dados para aparecerem fixos no relatorio?? -
daltro, já existe algum dado na sua tabela (ela tem algum registro??)??
-
acho q ele não achou o formulario entre os forms abertos. Form1 era so um nome q eu passei de exemplo, você tem q altera-lo para o nome do seu form de login.
-
huuum, se não me engano, se você fechar o primero form, a aplicacao toda sera fechada, não?? porque o primero form carregado é considerado o principal. não sei se teria uma forma mais facil pra resolver isso, mas eu faria a partir da classe ApplicationContext. mas isso daria trabalho, aqui tem um exemplo, mais o menos (olhe o penultimo post): http://forums.devx.com/archive/index.php/t-56168.html mas você poderia contornar isso de uma forma mais facil. em vez de destruir o primero form, você o esconderia. tipo assim: private void Form2_Load(object sender, EventArgs e) { Application.OpenForms["Form1"].Visible = false; }[/code] onde Form2 é o seu form de menu e Form1 era o form de login. e na hora de fechar o segundo form, você usaria esse codigo: [code]private void Form2_FormClosed(object sender, FormClosedEventArgs e) { Application.OpenForms["Form1"].Close(); } assim, ele fecha o form1 e, por consequencia, a aplicacao toda. EDITADO: a e não esquece de criar os eventos Load e FormClosed, não é so copiar o codigo.
-
é verdade, não tinha reparado nisso. textLogin e textSenha são textboxs?? então faca assim: MySqlCommand commS = new MySqlCommand("select login, senha from user where login = '" + textLogin.Text + "' and senha = '" + textSenha.Text + "'", mConn);
-
isso ai acho q é porque faltou abrir e fechar os parenteses. assim: if (rs.Read()) hum, se eu lembro bem das minhas epocas de c#, se você não quiser abrir a connection a cada formulario, você poderia criar uma propriedade MySqlConnection estatica em uma classe e usar essa propriedade. se não me engano, nem precisa instanciar o objeto, você pode acessar direto pelo nome da classe. se tiver dificuldade nisso, fala ai. bom, pra adicionar um form novo no projeto é so entrar no menu Project -> Add Windows Form... pra abri-lo depois do login, o codigo seria esse: Form2 f = new Form2(); f.Show();[/code] onde Form2 é o nome do seu formulario.
-
a esse eu vo ficar devendo, nunca usei o nslock.
-
acho q você quer dizer linguagem portavel ne?? conhece o google?? tem la.
-
a concatenacao ta ate certa, mas faltou aspa simples: "select login, senha from user where login = '" + textLogin + "' and senha = '" + textSenha + "'" e pra ler o retorno, não pode ser com ExecuteNonQuery(), porque o ExecuteNonQuery() não tras retorno. você pode usar um DataReader e pegar atravez do ExecuteReader(): MySqlDataReader rs = commS.ExecuteReader(); if (rs.Read()) { //achou o login } else { //não achou }[/code]
-
daltro, comente ou apague a linha On Error GoTo errGravacao (so pra ver o problema, depois pode por de novo) e tente gravar de novo. quando der erro, ai ele deve mostrar a verdadeira mensagem de erro. então poste ela ai pra gente saber do q se trata. outra coisa, não faca update sem where, senao você vai atualizar todas as linhas do banco de dados.
-
não não, eu tinha entendido errado. olha la, já editei o post de cima.
-
flecha, você tem q remover o arquivo do projeto, alterar o nome e depois incluir de novo com o novo nome. EDITADO: hum, eu tinha entendido q eram arquivos de dentro do projeto tipo formularios. agora vi q era o proprio projeto. pode alterar so o .vbp. o .vbw so serve pra guardar as ultimas posicoes das janelas de codigo, pra restaura-las quando você abrir o projeto de novo. então se você não se importa com isso não precisa mudar o nome, pode ate apagar, q ele vai acabar criando um novo de qualquer jeito. quanto ao .pdm, acho q são so informacoes do package q você deve ter feito. não tenho certeza se ele interfere em alguma coisa caso você quera refazer o package, mas não tem tanta importancia, você q sabe se quer alterar o nome, ou excluir.
-
hum, as utilidades q eu conheco são: 1 - pra fazer calculo tipo iif. acho q se chama operador ternario, alguma coisa assim. exemplo: (a == 1 ? b : c) se a for igual a 1, retorna b, senao retorna c. essas outras duas são pra c++: 2 - fazer heranca de classe 3 - pra definir quando as propriedades e metodos são publicos, privados, etc. exemplo: public : int a; não lembro se conheco otras utilidades.