Ir para conteúdo
Fórum Script Brasil

kuroi

Membros
  • Total de itens

    7.184
  • Registro em

  • Última visita

Tudo que kuroi postou

  1. 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.
  2. acho q seria isso: CRITERIO = "{TABELA.frutas} = '" & ITEM1 & "' Or {TABELA.frutas} = '" & ITEM2 & "'"
  3. 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.
  4. 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.
  5. 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).
  6. kuroi

    Imprimir form

    isso aí é visual basic .net, vou mover pra area correta.
  7. kuroi

    Cliente SMTP em VB.

    com esse componente, você consegue fazer isso: http://www.graymalkinsoftware.net/gspagina...age=Py.Sendmail
  8. 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.
  9. 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
  10. kuroi

    Inno Setup

    baixe o istool. ele é um wizard para o innosetup. com ele você pode criar os instaladores sem precisar conhecer a linguagem.
  11. e esses dados q foram digitados são gravados no banco de dados, ou você quer passar esses dados para aparecerem fixos no relatorio??
  12. daltro, já existe algum dado na sua tabela (ela tem algum registro??)??
  13. 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.
  14. 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.
  15. é 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);
  16. 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.
  17. a esse eu vo ficar devendo, nunca usei o nslock.
  18. acho q você quer dizer linguagem portavel ne?? conhece o google?? tem la.
  19. 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]
  20. 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.
  21. não não, eu tinha entendido errado. olha la, já editei o post de cima.
  22. 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.
  23. kuroi

    Soma da errado

    If somass < 25 Then
  24. kuroi

    Para que serve : em C

    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.
×
×
  • Criar Novo...