Ir para conteúdo
Fórum Script Brasil

Churc

Veteranos
  • Total de itens

    1.198
  • Registro em

  • Última visita

Tudo que Churc postou

  1. no seu outro post, o Micheus te respondeu da uma olhada: http://scriptbrasil.com.br/forum/index.php?showtopic=91312
  2. opa Micheus Isso realmente eu vou deixar em uma unit Global, que contém todas as definições, constantes, etc... a API rsQuanto a começar a enumerar do 1 e não do 0 vou fazer isso sim, alias ia deixar 0 mas uma opinião é sempre bem vinda... mas tem algum problema em iniciar do 0? pensei até em criar números sem sentidos tipo ON_START = 58752; rs nem tinha pensado nisso mas ainda bem que não vai ter não, deve chegar a uns 15 somente acho que nem vou precisar mudar isso então, serão com pouca frequência mas sua idéia foi perfeita, vou até pensar na possibilidade de por na função que carrega alguma propriedade pra manter ou não carregada e fazer como você falou, colocar uma variável no Type armazenando o Handle da DLL e carrega-la conforme necessário... Micheus valeu pela força! :D abraço
  3. opa Exatamente! Isso mesmo! Fiz um pequeno sistema para testar, "acredito" eu que esteja até bom, não vi meio de melhorá-lo, claro levando em conta que isso é só para testes, somente a estrutura é válida as informações são inúteis rs Da uma olhada aqui Qualquer opinião, crítica, sugestão será bem vinda! ps: o carregamento dos plugins e execução dos mesmos estão no source principal... valeu! abraço
  4. Churc

    Firebird

    opa já deu uma olhada nesse site? abs
  5. opa da uma olhada nesse tópico criado pelo Progr'amador Criando um relatório no Quickreport passo a passo. abs
  6. opa Realmente Micheus, tomei a liberdade de editar o post dele e manter as letras normais. Cabecao Bruno o fato de ninguém ter respondido não quer dizer que ninguém quer te ajudar, é que você não pediu uma ajuda diretamente. Eu não mexo com banco de dados, mas com base no que vejo porai, acredito que o mais correto é você já começar com um banco de dados de grande porte, ou pelo menos médio porte eheh, Firebird. Pra isso você deverá saber SQL, se não souber você pode aprender um pouco nesse site. Faça sua opção, leia na Internet sobre e depois você parte para a segunda parte, que é o desenvolvimento... ps: Pra seu post não ficar duplicado vou deletar o outro, acho que não há necessidade de 2 posts com o mesmo conteúdo. abraço
  7. Você chegou a testar o código com as teclas ASCII das demais teclas fora o backspace? abs
  8. Putz totalmente eheh eu nem pensei na possibilidade, vou utilizar constantes mesmo fica muito mais fácil e organizado... Então sabe porque se no caso eu for usar Type eu pretendo colocar um lugar pra armazenar os Eventos do plugin, pra não ficar carregando a cada evento todos os plugins e ficar passando o evento, acho que pode prejudicar na performance da aplicação, dar um LoadLibrary e FreeLibrary em todos os plugins a cada evento sendo que se eu der um loop e apenas chamar os plugins que tem aquele evento associado acho que vai ser bem melhor...Claro não precisa ser especificamente uma array, apenas um exemplo do porque eu queria armazenar os eventos dos plugins rs Não entendi muito bem o que você quis dizer, eu vo fazer um exemplo aqui ai vo postar pra você ver se você acha que fica legal ou não, mais fácil né, e assim até pode colocar do seu jeito se puder é claro :Dps: só não sei se sai hj rs amanhã ainda trabalho valeu ai abraço
  9. opa aqui funcionou certinho o exemplo do Miches... faz download do source... Delphi 6 http://rapidshare.com/files/8947602/killtask.zip abraço
  10. opa, não está viajando não :D Isso, serão pré-definidas... Então, uma array de TList é realmente pode ser uma boa idéia! Bom usando TList, pegaria a Index da array baseada nos eventos e armazenaria apenas o nome do plugin em cada linha da TList Apenas o nome do arquivo de plugin eu armazenaria na TList pois então na hora do evento, eu apenas carregaria o plugin e mandasse a informação pra ele... e no plugin ele ia pegar o evento passado e fazer o que for pra fazer... exemplo bem simples Plugin.dll Function PluginEvent(szEvent: String): Boolean; StdCall; begin if (lowercase(szEvent) = 'onexit') then bla.free; end; Usando TList, será que não vai ocupar muito memória do que se criar um array de um Type? exemplo type TPluginInfo = packed record Plugin: String; Events: String; end; var aPlugins: array [0..255] of TPluginInfo; no caso quando o programa inicializa, eu listaria em uma StringList todos os arquivos de plugins, e carregaria um por um pedindo os eventos no qual ele se associa exemplo (fiz fora do delphi rs) for i := 0 to slPlugins.Count - 1 do begin hHandle := LoadLibrary(sl[i]); {...} PluginEvents := GetProcAddress(.... if Assigned(PluginEvents) then begin aPlugins[i].Plugin := sl[i]; //o plugin retorna os eventos que ele quer se //associar separados por (ponto e vírgula) exemplo: onStart;onExit; aPlugins[i].Events := PluginEvents; end; slPlugins.Free; end; Então ai pra cada evento no programa eu daria um loop nessa array e comparava o evento que está acontecendo se ele está em .Events do plugin... usando Pos() por exemplo... e se o evento que está acontecendo for encontrado em .Events daquele array eu carregaria o Plugin, pegando a informação em .Plugin da array e passaria o evento pro plugin... Se não ocupar muita memória eu vou usar TList mesmo né valeu ai pela ajuda abraço
  11. É possível. Então acho que não vai dar certo desenvolvermos algo junto porqueacredito que seus plugins irão interagir visualmente com o sistema, digo por exemplo adicionar itens em MainMenus, popupmenus e tal e o meu não rs.. de qualquer forma, se você fosse carregar plugins conforme um evento da aplicação, como você faria? exemplo, quando o programa vai fechar teria um evento que eu chamaria de OnFinish quando o programa carregar os plugins, digo, definir qual é qual, então ele vai associar os plugins que tiver um Hook no evento OnFinish e armazenar em algum lugar, assim quando o programa for ser finalizado, ele procurar qual plugin tem um Hook nesse evento e chamá-lo, passando o evento associado pois um plugin por ter mais de um Hook de evento... como/onde você armazenaria estas informações dos plugins? Pensei em usar uma Array de um Type com informações exemplo Type TPluginInfo = packed record {..} Events: String; //aqui o plugin passa os eventos que ele terá Hook, exemplo: OnStart;OnFinish;... end; e depois pra cada evento do sistema, eu dar um loop na array desse type e procurar e chamar os plugins que tem o tal evento associado... Qualquer opinião, sugestão é bem vinda! :D abração
  12. Churc

    Ajuda Com Checkbox

    opa O que você quer fazer? você explicou o seu código então não da pra saber o que realmente você quer fazer... if cb_1.Checked then begin if cb_2.Checked then close; form1.Close; //?¿ end else begin close; end; Este código realmente está confuso porque o Form1 é o principal da aplicação e se você fechá-lo ele vai automaticamente terminar a aplicação e sendo assim vai fechar o form2 também! Então não faz sentido você colocar if cb_2.Checked then close; porque ele vai ser fechado de qualquer jeito pelo form1... form1.Close; Claro, supondo que você manteve a ordem de criação, então supostamente o Form1 é o principal... por isso talvez você esteja achando estranho que não está como você quer rs explica o que você quer fazer pra gente poder te ajudar ;) abraços
  13. Churc

    Ajuda Com Funções

    opa Esta funcão te retorna se um número de CPF é válido, então você deve utilizá-la da seguinte forma, exemplo: if CPF(Edit1.text) then begin //aqui o código pra caso o CPF for válido end else begin //aqui o código pra caso o número CPF for inválido end; Então por exemplo, se você quiser que o usuário digite um CPF válido seria, exemplo: if not CPF(Edit1.text) then begin Messagebox(Handle, 'O número do CPF digitado é inválido!'#13'Por favor corrija-o!', 'Erro', mb_ok or mb_iconerror); Exit; end; abraço
  14. opa Micheus blzz ;) Então, eu também tava dando uma estudada em uns plugins, especialmente o JvPlugin Framework do Project Jedi, deu pra tirar bastante idéia... Vou olhar estes ai que você me passou, ai se estiver interessado podemos montar um esquema de plugins juntos! Já estou de saída, desejo a você um feliz natal e tudo de bom pra você e sua família :D abraçoss
  15. opa olhando um outro tópico aqui no fórum, falando sobre volume do sistema eu achei algo que pode te ajudar da uma olhada nesse site. Un4Seen - BASS
  16. opa então tava pensando em fazer um sistema de Plugins, extensões, addons pro meu sistema, na verdade seria uma extensão mas nós entendemos mais como Plugins, Addons... vou citar como plugin né rs Eu iria carregar os plugins da seguinte forma, quando o programa inicia ele procura por todos os plugins na pasta, e cada plugin tem um Hook Event onde ele inicia quando determinado evento no programa é iniciado... O problema é qual a melhor forma de iniciar estes plugins, eu iria fazer um jeito que eu acho um pouco tosco, primeiro eu faria criando um TList pra cada evento e na hora de listar os plugins, adicionar aos TList os plugins que tem aquele evento associado... exemplo lstStart: TList; //Esse seria o TList para os plugins de quando o programa inicia... Depois a cada vez que determinado evento no sistema fosse ocorrer, procurar no TList daquele evento se há algum plugin para ser chamado, e se houver carregá-lo... Outra maneira seria criando uma array de um Type-Record guardando informações dos plugins e os executando conforme os eventos que o mesmo for assimilado... Bom, alguém já trabalhou com isso, tem alguma idéia ou sabe de algum site, material que fale sobre? Qualquer coisa é bem vinda rsr Abraçoss
  17. opa você pode fazer o seguinte adicione em Uses Masks; como exemplo to usando StringList contendo palavras e feita a procura com máscaras, usando WildCards '*' var sl: TStringList; i: Integer; begin sl := TStringList.Create; sl.Add('calça jeans'); sl.Add('camisa manga longa'); sl.Add('camisa manga curta'); for i := 0 to sl.count - 1 do if MatchesMask('camisa', '*' + sl[i] + '*') then showmessage('Achou: ' + sl[i]); sl.Free; end; neste exemplo ele vai achar a camisa manga longa e curta tem outros meios também usando exemplo onde está MatchesMask seria if Pos(Lowercase('palavra'), Lowercase(sl[i])) > 0 then showmessage('Achou: ' + sl[i]); espero ter ajudado abraços
  18. opa da uma olhada nesse link. abraço
  19. opa uia eu não sabia disso rs pra mim teria que adicionar o + por ser um caracter fora do contexto da string rsr valeu pela dica! ;)
  20. opa Isso vai depender de quanto você vai investir em cada notebook... Mas pelo que li no seu post no fórum Hardware, se quiser mesmo investir não compre com processadores AMD, eles esquentam mais e consomem bem mais energia... Se quiser mesmo investir, compre Sony Vayo por exemplo com processador DuoCore2, Centrino, 1 gb de RAM, 80 de HD se pode ter certeza que seus programadores ficarão felizes ahuahua Mas vai por mim, se os note vão ficar na empresa, você está investindo mal... a cada 1 notebook de ponta você monta 2 super computadores com tela LCD... rs essa é minha opinião! Feliz natal pra você também, e um ano novo repleto de conquistas! abraço
  21. Na minha opinião ele se refere mais ao "site" do que ao fórum, mas claro um faz parte do outro. Digo porque o site do scriptbrasil possui váaariosss coisas nossa senhora, e tudo de graça nada é pago ou coisa do tipo...
  22. Churc

    Programa Shareware

    opa Existem vários métodos, é aconselhavel se usar componentes de terceiros pois já são bastante trabalhados... BlindGuardian TmxProtector Torry Shareware Page Nesse site tem vários... sempre pegue o que for FWS = Freeware com Source abraço
  23. então deste jeito que te passei está filtrando, pra testar, coloque 3 edits no seu form e um botão, no edit1 coloque o texto R$ 40,00 e no edit2 coloque R$ 70,00 ou qualquer valor, e coloca o código do botão no OnClick do botão e ao clicar no botão ele vai somar os campos e jogar o resultado no Edit3... abraço
  24. opa você pode filtrar o conteúdo do Edit pra somente números e vírgulas... exemplo type TChars = set of Char; function FilterChars(const S: string; const ValidChars: TChars): string; var I: integer; begin Result := ''; for I := 1 to Length(S) do if S[I] in ValidChars then Result := Result + S[I]; end; procedure TForm1.Button1Click(Sender: TObject); var iA, iB, iTotal: Real; begin try iA := StrToFloat(FilterChars(Edit1.Text, ['0'..'9',','])); except iA := 0; end; try iB := StrToFloat(FilterChars(Edit2.Text, ['0'..'9',','])); except iB := 0; end; iTotal := iA + iB; Edit3.text := 'R$ ' + Formatfloat('###,###,##0.00', iTotal); end; abraço
×
×
  • Criar Novo...