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 Bom pra passar strings entre DLLs somente há um jeito, usando gerenciadores de memória, que faz o trabalho de limpá-la da memória... Agora caso não queira usar gerenciadores de memória somente é possível se você usar ShortStrings ou PChars, lembrando que uma função não pode retornar PChar onde você tem que fazer como a API do Windows faz, passar o ponteiro apenas e preenche-lo com o conteúdo conforme o tamanho do Buffer... Funções não podem retornar PChar pois vai deixar buracos na memória (Memory Leaks) e assim seu programa vai causar um grande estouro de pilha e retornar alguns access violations Este artigo é muito interessante e fala sobre isso... O melhor gerenciador de memória ou um dos é o FastShareMem, neste artigo fala sobre também... Pra usar é só você colocar em uma pasta que esteja na sua type library e referencia-lo como a primeira Unit do seu Projeto (Menu Project / View source)... Exemplo: program MyProgram; uses FastShareMem, ... * Lembrando que você deve fazer o mesmo tanto pra EXE quanto DLL * ShortStrings tem limite de 255 caracteres * PChars são apenas ponteiros, você precisa passar uma área de memória válida ou fazer alocação e desalocação de memória (GetMem, StrAloc, FreeMem, ...) abraço
  2. Opa Lendo na Internet alguns artigos, vi um que achei interessante, era uma espécie de Plugin que fazia com que o Delphi ficasse mais rápido... A instalação é simples, só descompactar em uma pasta e executar o InstallDelphiSpeedUpX.exe onde X é a sua versão do Delphi... Segundo vi e até está escrito no readme, este processo afeta bem pouco ou talvez não afeta o Delphi 2006 já que ele já está bem otimizado pela Borland... Tem suporte para: Delphi/C++Builder 5/6/7/2005, BDS 2006 - Turbo Delphi/C++/C# Professional Download abraço
  3. Churc

    Delphi 2006

    opa ahuahuahu eu li mas tava tão empolgado que nem lembrei de responder, foi mal... Então carrega rapidinho, mas assim a máquina em si é rápida também, e outra coisa, segundo pesquisei o Delphi 2006 foi bem otimizado nessa parte, vou ser sincero carrega bem mais rápido que o Delphi 6 que eu usava... A máquina é 3.2 com 1 gb de ram, por si própria ela já carrega rápido, mas com a mesma máquina o Delphi 6 era beeem mais lento pra carregar... Acho que vale a pena você testar... Da uma olhada nesse tópico que até criei como dica para deixar o Delphi mais rápido... Tópico :D abraço
  4. Churc

    Delphi 2006

    opa AEHAhuuha é verdade =S Então aproveitando o meu tópico besta, eu procurando no google sobre esse "bug" que na verdade foi uma burrice minha, para os que forem utilizar o Delphi 2006 e querer a paleta de componentes antiga, já que a versão 2006 vem com uma paleta com estilo diferente, da uma olhada nesse artigo... A Nova "Velha" paleta de componentes do Delphi 2006 Valeu Progr'amador :D abraço
  5. Churc

    Delphi 2006

    Opa Alguém ai usa ou já usou o Delphi 2006? Então eu instalei aqui, mas meus componentes não aparecem na paleta, aparece somente umas coisas nada a ver tipo, nova aplicação, nova unit, muito esquisito rs Screenshot Repare que a Tool Palete que acredito que seria a Paleta de componentes já que não vi mais nada parecido não mostra os componentes, talvez eu fiz alguma cagada no mínimo rs Acho que isso aconteceu depois de instalar o JEDI VCL =S Alguém tem alguma idéia? rs abraço
  6. opa ou você pode filtrar os campos usando este método Post ou você pode também, se for possível retornar como data tipo var x: String; begin x := FormatDateTime('ddmmaaaa', Modulo.MESFISVENDATEMI.AsDate?¿); uahhuaahu não saco nada de bd =S abraço
  7. Churc

    Copiar Arquivos Na Lan

    opa Cara mais fácil você transferir estes arquivos via socket. Vai ficar um programa rodando em uma máquina e um outro na outra, vai ser um pouco complicado você vai ter que ter um pouco de noção e quebrar a cabeça. Da uma olhada nestes arquivos Artigo 1 Artigo 2 Acho que é mais fácil, assim no próprio programa você define a pasta que você quer armazenar e tudo mais... abraço
  8. opa tenta assim Function FillZeros(const szStr: String; iFillLength: Integer): String; var i: Integer; begin Result := szStr; if Length(szStr) < iFillLength then for i := Length(szStr) to iFillLength do Result := Result + '0'; end; agora é só passar direto sem usar variavéis tipo Format('%35.35s',[''+(FillZeros(Modulo.CADCLIRAZSOC.Value, 35))]) abraço
  9. opa Use esta rotina pra você criar thumbnails... procedure MakeThumbNail(aSource, aDest: TBitmap; iWidth, iHeigth: Integer); type PRGB24 = ^TRGB24; TRGB24 = packed record B: Byte; G: Byte; R: Byte; end; var x, y, ix, iy: integer; x1, x2, x3: integer; xscale, yscale: single; iRed, iGrn, iBlu, iRatio: Longword; p, c1, c2, c3, c4, c5: tRGB24; pt, pt1: pRGB24; iSrc, iDst, s1: integer; i, j, r, g, b, tmpY: integer; RowDest, RowSource, RowSourceStart: integer; w, h: integer; dxmin, dymin: integer; ny1, ny2, ny3: integer; dx, dy: integer; lutX, lutY: array of integer; begin if aSource.PixelFormat <> pf24bit then aSource.PixelFormat := pf24bit; if aDest.PixelFormat <> pf24bit then aDest.PixelFormat := pf24bit; aDest.Width := iWidth; aDest.Height := iHeigth; w := iWidth; h := iHeigth; if (aSource.Width <= iWidth) and (aSource.Height <= iHeigth) then begin aDest.Assign(aSource); exit; end; iDst := (w * 24 + 31) and not 31; iDst := iDst div 8; iSrc := (aSource.Width * 24 + 31) and not 31; iSrc := iSrc div 8; xscale := 1 / (w / aSource.Width); yscale := 1 / (h / aSource.Height); SetLength(lutX, w); x1 := 0; x2 := trunc(xscale); for x := 0 to w - 1 do begin lutX[x] := x2 - x1; x1 := x2; x2 := trunc((x + 2) * xscale); end; SetLength(lutY, h); x1 := 0; x2 := trunc(yscale); for x := 0 to h - 1 do begin lutY[x] := x2 - x1; x1 := x2; x2 := trunc((x + 2) * yscale); end; dec(w); dec(h); RowDest := integer(aDest.Scanline[0]); RowSourceStart := integer(aSource.Scanline[0]); RowSource := RowSourceStart; for y := 0 to h do begin dy := lutY[y]; x1 := 0; x3 := 0; for x := 0 to w do begin dx := lutX[x]; iRed := 0; iGrn := 0; iBlu := 0; RowSource := RowSourceStart; for iy := 1 to dy do begin pt := PRGB24(RowSource + x1); for ix := 1 to dx do begin iRed := iRed + pt.R; iGrn := iGrn + pt.G; iBlu := iBlu + pt.B; inc(pt); end; RowSource := RowSource - iSrc; end; iRatio := 65535 div (dx * dy); pt1 := PRGB24(RowDest + x3); pt1.R := (iRed * iRatio) shr 16; pt1.G := (iGrn * iRatio) shr 16; pt1.B := (iBlu * iRatio) shr 16; x1 := x1 + 3 * dx; inc(x3, 3); end; RowDest := RowDest - iDst; RowSourceStart := RowSource; end; if aDest.Height < 3 then exit; s1 := integer(aDest.ScanLine[0]); iDst := integer(aDest.ScanLine[1]) - s1; ny1 := Integer(s1); ny2 := ny1 + iDst; ny3 := ny2 + iDst; for y := 1 to aDest.Height - 2 do begin for x := 0 to aDest.Width - 3 do begin x1 := x * 3; x2 := x1 + 3; x3 := x1 + 6; c1 := pRGB24(ny1 + x1)^; c2 := pRGB24(ny1 + x3)^; c3 := pRGB24(ny2 + x2)^; c4 := pRGB24(ny3 + x1)^; c5 := pRGB24(ny3 + x3)^; r := (c1.R + c2.R + (c3.R * -12) + c4.R + c5.R) div -8; g := (c1.G + c2.G + (c3.G * -12) + c4.G + c5.G) div -8; b := (c1.B + c2.B + (c3.B * -12) + c4.B + c5.B) div -8; if r < 0 then r := 0 else if r > 255 then r := 255; if g < 0 then g := 0 else if g > 255 then g := 255; if b < 0 then b := 0 else if b > 255 then b := 255; pt1 := pRGB24(ny2 + x2); pt1.R := r; pt1.G := g; pt1.B := b; end; inc(ny1, iDst); inc(ny2, iDst); inc(ny3, iDst); end; end;Pra usar seria assim, exemplo MakeThumbnail(Variavel com a foto, Variavel que vai receber a foto menor, Comprimento, Altura); var a, b: TBitmap; begin a := TBitmap.Create; b := TBitmap.Create; a := Recebe a foto da webcam; makethumbnail(a, b, 160, 120); b agora é a foto da webcam no tamanho 160x120 Viu, se puder compartilhar esse componente ou biblioteca Twain que usou para capturar a foto da webcam, várias pessoas procuram por isso, se puder passar o site ou até mesmo o componente todo mundo vai agradecer auhauha abraço
  10. Churc

    Tabela Paradox

    aeaeae :D beleza cara! Abraço
  11. Churc

    Tabela Paradox

    opa Quer dizer que não é uma tabela, e sim você estáimportando isso de um arquivo CSV? Porque se for isso, claro que tem jeito é só você mudar a forma de leitura rs Mesmo que fosse um arquivo de tabela Paradox era só abrir no Database Desktop por exemplo e alterar o nome do campo... Se for de um arquivo CSV, cole uma linha por exemplo do arquivo e também o código que você está fazendo leitura
  12. Churc

    Tabela Paradox

    opa Então... pouco provável porque senão não seria permitido o uso de barras em nome de campos... tente assim procedure TForm1.XiButton5Click(Sender: TObject); Var Cnpj:string; begin while not Table1.Eof do Begin table1.edit; VarCnpj := table1.FieldbyName('CNPJ/CPF').asstring; VarCnpj := FilterChars(VarCnpj, ['0'..'9']); table1.FieldbyName('CNPJ/CPF').value := VarCnpj; table1.post; end; table1.next; end; abs
  13. Churc

    Falecimento Do Delphi?

    opa Na minha opinião esta informação não procede, não neste caso, cada um prefere uma ferramenta, é que você ouviu mais os que preferem VB... Quem programa em Delphi se fosse pra trocar pra outra linguagem se pode ter certeza que não seria pra VB, talvez C++ rsr minha opinião é claro... A única coisa que aconteceu com o Delphi é que a Borland criadora do Delphi criou uma subsidiária pra tomar conta dos compiladores, e não mais vai manter o Delphi, e sim a CodeGear, mais info em http://www.codegear.com Ranilson você já é um usuário frequentador do fórum porque não se registra? rsr não leva nem um minuto e fica muito mais fácil saber que é você pois as vezes você abre um tópíco como ranilson e responde como Visitante rsr abraço
  14. opa entendi sim, é só criar uma rotina pra preencher com zeros tipo procedure FillZeros(var szStr: String; iFillLength: Integer); var i: Integer; begin if Length(szStr) < iFillLength then for i := Length(szStr) to iFillLength do szStr := szStr + '0'; end; pra usar, você deve passar a variavel que contém o valor mais o tamanho do campo exemplo, se o campo tem 35 caracteres e a escrita tem 11 var x: String; begin x := 'FULANODETAL'; x := FillZeros(x, 35); //Logo x vai ser = 'FULANODETAL' + os zeros preenchendo até completar 35 caracteres Fiz a rotina fora do delphi pode ser que contenha pequenos erros abraço
  15. opa adicione em Uses StrUtils; depois só você fazer exemplo var x: String; begin x := 'A B C D'; x := AnsiReplaceStr(x, ' ', '0'); //logo x ficou = A0B0C0D Tem também o AnsiReplaceText a diferença é que o AnsiReplaceStr ele faz diferenciação de maiúsculas para minúsculas já o AnsiReplaceText ignora... abraço
  16. Churc

    Tabela Paradox

    opa bom isso não existe mesmo table1Cnpj/cpf.value tá uma mistura do componente TTable com o nome do campo rsr qual o nome do campo CNPJ na tabela? se ele se chamar CNPJ por exemplo você poderia fazer procedure TForm1.XiButton5Click(Sender: TObject); Var Cnpj:string; begin while not Table1.Eof do Begin table1.edit; VarCnpj := table1.FieldbyName('CNPJ').asstring; VarCnpj := FilterChars(VarCnpj, ['0'..'9']); table1.FieldbyName('CNPJ').value := VarCnpj; table1.post; end; table1.next; end; abraço
  17. opa da uma olhada neste tópico. abraço
  18. Churc

    Tabela Paradox

    opa ahuahu então eu entendi sim então para isso só você fazer um Loop na sua tabela exemplo while not Table.Eof do e pegar o valor do campo no loop em uma variavel variavel := table.cnpj.asstring; fazer o que eu te falei do filtro variavel := FilterChars(variavel, ['0'..'9']); e jogar devolta o campo atual do loop sem os traços e pontos que foram filtrados acima... table.cnpj.value := variavel; entendeu mais ou menos? abraço
  19. Churc

    Tabela Paradox

    opa retirado do dtdelphi 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; ai pra usar exemplo szCNPJ := FilterChars('774.974.819-91', ['0'..'9']); pra aceitar só letras por exemplo em uma frase é só passar em ValidChars ['a'..'z'] e pra aceitar maiúsculas ['A'..'Z'] pra aceitar letras (maiúsculas também), números, pontos e traços FilterChars(String, ['a'..'z', 'A'..'Z', '0'..'9', '.', '-']); e por ai vai... abraço
  20. Churc

    Dunit

    Xtreme testing framework for Borland Delphi programs (link)Wikipédia: "DUnit é uma ferramenta de código aberto para testes de unidade em programas desenvolvidos na linguagem Pascal, no Delphi, baseada na ferramenta JUnit voltada para a linguagem Java." (link) Artigos no DevMedia - Test-driven Development with Delphi - Testes Unitários O assunto parece interessante. Abraços uia verdade parece mesmo xD
  21. Churc

    Dunit

    opa o que seria essa DUnit? abs
  22. opa ranilson, Procure não ficar abrindo vários tópicos com o mesmo tipo de conteúdo, no seu outro tópico ao invés de você dizer obrigado pela orientação você poderia ter dito que não te serviu ou que você não entendeu assim eu ou outra pessoa postaria outros métodos... De qualquer forma, eu encorajo você a utilizar a busca do fórum, clique aqui. Na página que aparecer, em Procurar por Palavra-chave digite backup e clique em Pesquisar, vai aparecer vários posts com este tipo de conteúdo, talvez te ajude... abraço
  23. opa Eu faria assim, faça um .EXE chamado Backup.exe por exemplo, e este backup.exe ficaria na mesma pasta do seu aplicativo principal, então quando for ser feito o Backup, o programa principal abre o backup.exe e se fecha, o backup.exe faz seus procedimentos e depois que terminar abre o aplicativo principal novamente, assim você não vai ter esse problema... abraço
  24. opa Ok, então fechando o tópico! O motivo, é para evitar que o usem para SPAMS! Abraço
  25. Churc

    Volume Do Windows

    opa tem maneira mais fácil, o Windows quando é mudado o volume ou suas propriedades envia uma mensagem para todas as aplicações informando isto, então o jeito é detectar esta mensagem e ai você nem precisa ficar checando de 10 em 10 segundos, e apenas habilitar o áudio quando ele for desabilitado... Se eu encontrar algo sobre eu posto aqui... abraço
×
×
  • Criar Novo...