Ir para conteúdo
Fórum Script Brasil

Churc

Veteranos
  • Total de itens

    1.198
  • Registro em

  • Última visita

Tudo que Churc postou

  1. opa comentei se caso não soubesse rs Da uma olhada nesse link Why not use an EXE compressor? no final da página... Se o problema então é o tamanho do executável, então você pode optar por usar DLLs, a vantagem de usar DLLs é que você pode distribuir o mesmo código entre instâncias e somente carregar o que for necessário, quando for preciso... abraço
  2. opa faz o download da biblioteca inpout32 aqui é opensource... copie a dll inpout32.dll que vem dentro da pasta binaries\DLL para a pasta do sistema normalmente Win9x,ME: c:\Windows\system NT, 2000, XP, Vista: c:\Windows\System32 declare no seu código function inportb(_Port: Integer): BYTE; StdCall; external 'inpout32.dll'; procedure outportb(_Port: Integer; _Data: BYTE); StdCall; external 'inpout32.dll'; abraço
  3. opa da uma olhada nesse exemplo de manipulação de arquivos INI, nele possui como gravar fontes e tudo mais... Download abraço
  4. opaentão supostamente seria if (whichCode == 13) || (whichCode == 8) || (whichCode == 46) || (whichCode == 37) || (whichCode == 39) return true; deve ter um jeito mais fácil de ser fazer, em delphi seria tipo Result := (wichCode in [13,8,46,37,39]) ou case withCode of 13,18,46,37,39: Result := True; end; bom espero que de certo :D abraço
  5. opa cara eu não entendo nada de javascript, mas por lógica de programação, você pode talvez fazer o que você quer nessa parte: Aqui ele filtra se o usuário apertou o Enter então ele deixa passar: "return True" if (whichCode == 13) return true; 13 é o caracter ASCII referente ao Enter, então a lógica é, se você jogar os caracteres ASCII para as teclas que deseja "talvez" funcione! exemplo, como usa um OR em javascript? Ai vai os caracteres ASCII para as teclas que você mencionou: Backspack - 8 Delete - 46 Seta esquerda - 37 Seta direita - 39 Então o que você teria a fazer é tipo if (whichCode == 13) OR? (whichCode == 8) OR? (whichCode == 46) OR? (whichCode == 37) OR? (whichCode == 39) return true; troque o OR? pelo operador usado pra OR em javascript... talvez tenha um jeito melhor de se fazer isso rsr... não sei se vai funcionar, mas pela lógica pode ser que sim rs abraço
  6. é realmente é complicado, pois não tem como saber a origem do problema assim fácil.... Eu não mexi no Turbo Delphi, então não sei se é a mesma interface que o delphi comum, mas seus formulários são criados na inicialização ou em tempo de execução? exemplo de formulários criados na inicialização, no menu Project / View Source application.initialize; application.title := 'bla'; application.createform(tform1, form1); //form principal application.createform(tform2, form2); //form criado na inicialização application.createform(tform3, form3); //form criado na inicialização application.createform(tform4, form4); //form criado na inicialização application.Run; lembrando que em Turbo Delphi eu não sei se é do mesmo jeito rs estão seus forms sendo criados na inicialização? abraço
  7. opa 64,0MB Ram depende o programa é realmente pouco, de qualquer forma, esta máquina não possui o Norton instalado nela não né? apenas atoa, porque já ouvi dizerem que o Norton no Windows 98 tem um bug, em um tal de driver Veritas Vsp.sys que causa conflitos de memória com alguns programas... já tentou aumentar a mémoria de um micro e testar? abraço
  8. opa da sim, faz o seguinte if FileExists('Caminho do Arquivo\Arquivo.txt') then begin MessageBox(Handle, 'O Arquivo existe'+#13+ 'Aqui a segunda linha :)', 'Titulo da mensagem', MB_OK or MB_ICONINFORMATION); RenameFile('Caminho do Arquivo\Arquivo.txt', 'Caminho do Arquivo\Arquivo.rex'); end else MessageBox(Handle, 'O Arquivo não existe...'+#13+ 'Aqui a segunda linha :)', 'Titulo da mensagem', MB_OK or MB_ICONERROR); pra cada nova linha na mensagem você adiciona um +#13+ abraço
  9. opa então como mencionei no seu outro tópico, eu não mexo com banco de dados então não sei te ajudar, mas uma coisa que eu acho é que talvez se você usasse componentes preparados para conexão como o ZeosLib por exemplo talvez essa lentidão não teria... "Talvez" sim essa lentidão é por causa do BDE, to falando porque nunca ouvi ninguém falar que usou para conexão com IB, mas como falei e falando denovo eu não manjo nada de BD, então ignora isso caso esteja falando bobagem ahuauha Porque você não tenta o componente ZeosLib? é de graça, opensource e suporta a maioria dos bancos de dados, e eu já mexi com Firebird/ZeosLib em rede e até internet, não tinha lentidão nenhuma, imagine em rede então que uma 10/100 faz em média 3,5 mb por segundo de transferência... É fácil configurar a ZeosLib, a única coisa que você vai precisar é do datasource da paleta Datacontrols, o resto tem tudo tipo ZQuery, ZTable, e é tudo nativo... Da uma olhada no site do Zeoslib Baixe o ZeosDBO (Zeos Database Objects) Desabilite o Firewall...O firewall do Windows é um peso morto no computador, ainda mais computadores em rede, qualquer trojan, spyware, malware burlam ele... Nem precisa, nem Firebird, nem Interbase são tão pesados assim, ainda mais pra poucas máquinas em rede...Se fosse por exemplo, 100 máquinas em rede e todas trabalhando com banco de dados ai sim você teria que ter um OS próprio pra servidor, um Linux por exemplo e uma máquina boa rsr abraços
  10. opa já que ninguém te respondeu... eu não mexo com bd então não sei te explicar ao certo, mas o que sei é que sim, Firebird e Interbase são praticamente os mesmos, até onde sei o Firebird é um opensource do Interbase, mas até melhor, pois é gratuito e opensource então estão sempre atualizando, e é de graça (claro opensource =p) Acho que quanto alterar código nenhum, se for códigos de SQL acredito que você não vai precisar mudar, agora claro, quanto a configuração de acesso ao Firebird vai precisar sim, as extensões do arquivo de banco de dados muda, e o protocolo também... quando mexi eu usei o ZeosLib pra conectar ao Firebird e era xuxu beleza auhahu
  11. Churc

    Pin Pad

    opa bom então o erro não acontece na função de leitura e sim na hora de ler as variavéis? pra saber isso fácil ao invés de carregar a DLL estaticamente carregue ela dynamicamente, e se der erro na função de carregamento então o erro está na leitura da DLL caso contrário o erro está no .exe mais precisamento nas variaveis recebidas... uma besteira, mas pra mudar o tipo da variavel, de PChar pra String (Typecast) tenta usar StrPas exemplo Memo1.Lines.Add('VL_Track2: '+StrPas(VL_Track2)); Memo1.Lines.Add('VL_CardNo: '+StrPas(VL_CardNo)); Memo1.Lines.Add('VL_Name: '+StrPas(VL_Name)); Memo1.Lines.Add('VL_DiscData: '+StrPas(VL_DiscData)); Memo1.Lines.Add('VL_CardType: '+StrPas(VL_CardType)); Memo1.Lines.Add('VL_Flag: '+StrPas(VL_Flag)); Memo1.Lines.Add('VL_PIX: '+StrPas(VL_PIX)); Memo1.Lines.Add('VL_Cred: '+StrPas(VL_Cred)); engraçado que naquela biblioteca que falei acima, algumas variavéis são trabalhadas primeiro antes de serem passadas pra função principal... if (!fGetValue ("iTimeOut", &lTimeOut)) return (APP_CANCEL); if (!fGetSel ("iPayMode", gvpszPayMode, &iPayMode)) return (APP_CANCEL); if (!fGetString ("pszDate (AAAAMMDD)", 8, GETS_FIXEDLEN|GETS_NOSZ, gszDate)) return (APP_CANCEL);
  12. opa Sim isto é possível... através da Internet, como você mencionou pelo IP, porém a máquina "servidor" terá que ter conexão direta com a Internet, não vai poder estar atrás de Firewalls, Roteadores, NAT... eu não manjo banco de dados então não sei te falar ao certo, mas você terá de usar um banco de dados com suporte a conexões remotas e servidor, como Firebird, Interbase, MySQL, etc... talvez alguém mais experiente te ajude melhor eheh abraço
  13. Churc

    Pin Pad

    opa eu nunca mexi com isso não, mas acho que talvez o erro seja como você está passando os parâmetros pra DLL... procurei na net sobre, mas realmente é algo pouco discutido, alias a maior parte do que aparece é seus posts em outros fóruns ehehe cara da uma olhada nessa biblioteca, não sei se você já a tem -> Link é uma biblioteca completa para acesso a esse pin-pad magic 1800, está escrita em C, mas se não souber como passar para delphi a gente te da uma força... Na pasta Misc\ tem uma fonte com várias funções incluindo essa sua, que está declarada lá como iGetCard Na pasta Include\ está os cabeçalhos Possui até as dlls pra 16 e 32 bits... qualquer coisa posta ai abraço
  14. opa seguinte, a única coisa ruim é que somente seu programa poderá descompactar, você não poderá abrir o arquivo compactado com o Winzip, Winrar por exemplo... isso pode ser bom por um lado rs baseado na fonte do torry procedure EnumFiles(szPath, szAllowedExt: String; iAttributes: Integer; Buffer: TStrings; bClear, bIncludePath: Boolean); StdCall; var res: TSearchRec; szBuff: String; begin if (bClear) then Buffer.Clear; szPath := IncludeTrailingBackslash(szPath); if (FindFirst(szPath + szAllowedExt, iAttributes, res) = 0) then begin repeat szBuff := res.Name; if ((szBuff <> '.') and (szBuff <> '..')) then if (bIncludePath) then Buffer.Add(szPath + szBuff) else Buffer.Add(szBuff); until FindNext(res) <> 0; FindClose(res); end; end; procedure CompressFiles(Files: TStrings; const Filename: String); var infile, outfile, tmpFile : TFileStream; compr : TCompressionStream; i,l : Integer; s : String; begin if Files.Count > 0 then begin outFile := TFileStream.Create(Filename,fmCreate); try { the number of files } l := Files.Count; outfile.Write(l,SizeOf(l)); for i := 0 to Files.Count-1 do begin infile := TFileStream.Create(Files[i],fmOpenRead); try { the original filename } s := ExtractFilename(Files[i]); l := Length(s); outfile.Write(l,SizeOf(l)); outfile.Write(s[1],l); { the original filesize } l := infile.Size; outfile.Write(l,SizeOf(l)); { compress and store the file temporary} tmpFile := TFileStream.Create('tmp',fmCreate); compr := TCompressionStream.Create(clMax,tmpfile); try compr.CopyFrom(infile,l); finally compr.Free; tmpFile.Free; end; { append the compressed file to the destination file } tmpFile := TFileStream.Create('tmp',fmOpenRead); try outfile.CopyFrom(tmpFile,0); finally tmpFile.Free; end; finally infile.Free; end; end; finally outfile.Free; end; DeleteFile('tmp'); end; end; procedure DecompressFiles(const Filename, DestDirectory : String); var dest,s : String; decompr : TDecompressionStream; infile, outfile : TFilestream; i,l,c : Integer; begin // IncludeTrailingPathDelimiter (D6/D7 only) dest := IncludeTrailingPathDelimiter(DestDirectory); ForceDirectories(Dest); infile := TFileStream.Create(Filename,fmOpenRead); try { number of files } infile.Read(c,SizeOf(c)); for i := 1 to c do begin { read filename } infile.Read(l,SizeOf(l)); SetLength(s,l); infile.Read(s[1],l); { read filesize } infile.Read(l,SizeOf(l)); { decompress the files and store it } s := dest+s; //include the path outfile := TFileStream.Create(s,fmCreate); decompr := TDecompressionStream.Create(infile); try outfile.CopyFrom(decompr,l); finally outfile.Free; decompr.Free; end; end; finally infile.Free; end; end; ai pra compactar você faz exemplo, vamos supor que a pasta que você quer compactar é "C:\Meu Sistema\BD" e no click de um botao você coloca... var slFiles: TStringList; begin slFiles := TStringList.Create; EnumFiles('C:\Meu Sistema\BD\', '*', faAnyFile - faDirectory, slFiles, True, True); CompressFiles(slFiles, 'c:\Backup1.bkp'); slFiles.Free; repara que em C:\Backup1.bkp você troca pro nome do arquivo que deseja salvar o backup. eu recomendaria você trocar pelo seguinte, exemplo CompressFiles(slFiles, 'backup' + FormatDateTime('ddmmyy', Date) + FormatDateTime('HHmm', Time) + '.bkp'); Assim o nome do arquivo será a data e a hora em que foi salvo.... exemplo, hoje dia 16/12/06 e agora são 19:36 backup1612061936.bkp Data Hora A extensão .bkp você pode trocar pra qualquer uma, somente para reconhecimento do tipo de arquivo... pra descompactar, baseado no primeiro exemplo você faz DecompressFiles('C:\Backup1.bkp', 'C:\Meu Sistema\BD'); a vantagem de você usar Data e Hora pra salvar o arquivo de backup é que é uma mão na roda pra achar um determinado backup de um tal dia... abraço
  15. opa Existem vários, eu recomendo o Inno Setup, é de graça e você faz de tudo nele... http://www.innosetup.com baixa o Interbase server e instala na máquina...você pode sim executar ele através do instalador... acesse e procure por Interbase Server na seção Utilitários http://www.fortesinformatica.com.br/download.php espero que seja isso eheh abraço
  16. Churc

    Oracle Xe

    opa eu não mexo muito com banco de dados então não sei te dizer se é o melhor ou não mas você pode usar a biblioteca Zeos para fazer conexão, ela tem suporte a Oracle também... Pra MySQL, Firebird é bom quanto a oracle já não sei... www.sourceforge.net/projects/zeoslib Baixa o pacote ZeosDBO talvez haja outros melhores, vamos esperar que alguém poste eheh abraço
  17. opa, desculpa esqueci... adicione em Uses Registry; abraço
  18. Sim, desde o Windows 95... você quer saber a versão para checar compatibilidade? para pegar a versão por extenso use a rotina abaixo... function IEVersao: String; begin with TRegistry.Create do try RootKey := HKEY_LOCAL_MACHINE; if OpenKey('Software\Microsoft\Internet Explorer', False) then begin if ValueExists('Version') then Result := ReadString('Version') else if ValueExists('IVer') then Result := ReadString('IVer') else Result := '0'; CloseKey; end; finally Free; end; end; use exemplo Label1.caption := IEVersao;
  19. opa na chave do registro do windows "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer" possui ou o valor "Version" ou "IVer" dependendo da versão que está instalado... ai pra saber qual a versão, você puxa o valor do registro, comece com "Version" e se não existir você pula para o "IVer"... o primeiro número é correspondente a versão, exemplo 6.0.2900.2180
  20. Churc

    Addnew

    qual o nome do campo que você utiliza pra armazenar os códigos dos produtos, este campo é de qual tipo?
  21. Churc

    Addnew

    opa para que possamos te ajudar será necessário que você cole a parte do seu código em que está dando o erro... abs
  22. Churc

    Qreport Expression

    opa para formatar o valor para aparecer como valor monetário é Formatfloat('###,###,##0.00', Valor); então pra você por no Label seria, exemplo Label1.Caption := 'R$ ' + Formatfloat('###,###,##0.00', Valor); troque o valor pela variavel que você está usando para receber a soma total... Uma dica, na Busca do fórum, procure por FormatFloat você vai encontrar vários exemplos, até mesmo com Quickreport... abraços
  23. opa! Valeu galera :D No que eu puder ajudar, estarei sempre ai! abração
  24. Churc

    Addnew

    opa então pela lógica da função acima não daria pois ela sempre irá pegar o últimocódigo e criar um novo adicionando + 1, ou seja, 100, 101, 102 do jeito que você queria... O que você pode fazer, é uma rotina que procure por "buracos" nos códigos dos produtos e assim se encontrado, o novo produto que vai ser cadastrado vai ganhar aquele código, o que não é aconselhavél pois pode gerar futuros conflitos com relatórios por exemplo... abraço
×
×
  • Criar Novo...