Ir para conteúdo
Fórum Script Brasil

Douglas Soares

Veteranos
  • Total de itens

    864
  • Registro em

  • Última visita

Tudo que Douglas Soares postou

  1. Algumas vezes não compila e dá a mensagem Undeclared Identifier xxxxxx, se der essa mensagem passa aqui pra mim ver qual Unit eu esqueci de te falar pra adicionar ai....
  2. Boa tarde, to tento outro problema com IDFtp, to ficando doidão dnv :rolleyes: :blink: :wacko: , me ajudem!!!! Eu preencho umas linhas no dbgrid, e ativo uma JvThread, no OnExecute da JvThread eu coloco o comando IDFTP.PUT(origem, destino, false); e então no evento OnFinish eu faço um for e tento iniciar a thread novamente com o proximo arquivo a ser enviado! procedure TfrmPrincipal.threadEnvioFinish(Sender: TObject); var i, a : integer; begin for i := 0 to cdsUpload.RecordCount - 1 do begin if cdsUpload.FieldByName('ESTADO').Value = 1 then begin cdsUpload.Edit; cdsUpload.FieldByName('ESTADO').Value := 2; cdsUpload.Post; end; cdsUpload.Next; end; for a := 0 to cdsUpload.RecordCount - 1 do begin if cdsUpload.FieldByName('ESTADO').Value = 0 then begin cdsUpload.Edit; cdsUpload.FieldByName('ESTADO').Value := 1; cdsUpload.Post; Break; end; cdsUpload.Next; end; origem := cdsUpload.FieldByName('NOMELOCAL').Text; destino := cdsUpload.FieldByName('NOMEREMOTO').Text; threadEnvio.Execute(Self); end; Porém quando ele envia o 1º arquivo e vai começar enviar o segundo ele dá erro de ReadTimeOut sendo que eu coloquei a propriedade ReadTimeOut em 30000, mesmo assim o erro me persegue e não consigo enviar mais de um arquivo sem ter que reiniciar a aplicação :( O que pode estar acontecendo?
  3. Besteira minha :P , o IdFTP.Put que eu coloco na thread! ehehe deu certinho o que eu queria, Vlw pela atenção Jhonas Abraços
  4. Vou dar um exemplo com meu site :P www.mestrerunescape.com.br/protetordelink=p8tD3/em.ergim//:ptth você vai extrair esse migre.me e ao acessar vai redirecionar pra outra url de meu site com protetor de link com outro migre.me, dai você teria q extrair dnv!, é só um exemplo, pois já vi varios sites assim! Obs: não poe esse dominio do meu site no seu programa pois ele não é de filme e n quero sujar ele rssrsr Abraços
  5. Consegui fazer minhas gambis ^^, agora seguinte, tá travando tudo mesmo com IDAntiFreeze fica dando uns laags, to com preguiça de fazer thread para o IDFtp, tem algum jeito de eu colocar o IDFTPOnWork em um JvThread do JediVcl???
  6. Porque as vezes essa url do migre.me quando é redireciona ela vai pra outro maldito protetor de link, dai tem q esperar dnv, os caras tão ficando espertos... hehehehe Abraços
  7. Seu exemplo não funciona comigo pois tenho 2 opções no DbGrid que optei em ativa-las: dgRowSelect e dgAlwaysShowSelection, e essas 2 desativam a opção dgEditing.... daí não acontece nada, o gauge não aparece nem o panel, ehehhe
  8. Sim eu li, estou + ou - isso, eu crio um panel em tempo de execução e adiciono um gauge nele em execução também, até aí beleza to conseguindo adicionar até 2 linhas no dbgrid q ele cria gauge... na terceira ele já começa dar acess violation :( Olha o código: procedure TfrmPrincipal.DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var DrawState: Integer; DrawRect: TRect; mypanel : TPanel; myprogress : TGauge; i : integer; jaexiste : boolean; begin jaexiste := false; if not cdsUpload.IsEmpty then begin if cdsUpload.FieldByName('PROGRESSO').Value >= 0 then begin if Column.FieldName = 'PROGRESSO' then begin for i := 0 to frmPrincipal.ComponentCount - 1 do begin if TPanel(frmPrincipal.Components[i]).Name = 'mypanel' + cdsUpload.FieldByName('ID').AsString then begin jaexiste := true; Break; end; end; if jaexiste = false then begin ShowMessage('aff'); mypanel := TPanel.Create(frmPrincipal); mypanel.Parent := TabSheet4; mypanel.Name := 'mypanel' + cdsUpload.FieldByName('ID').AsString; mypanel.Left := Rect.Left + DBGrid2.Left + 2; mypanel.Top := Rect.Top + DBGrid2.top + 2; mypanel.Width := Rect.Right - Rect.Left; mypanel.Height := Rect.Bottom - Rect.Top; mypanel.Visible := True; myprogress := TGauge.Create(frmPrincipal); myprogress.Parent := mypanel; myprogress.Name := 'myprogress' + cdsUpload.FieldByName('ID').AsString; myprogress.Align := alClient; end; TGauge('myprogress' + cdsUpload.FieldByName('ID').AsString).Progress := cdsUpload.FieldByName('PROGRESSO').Value; end; end; end; end; Abraços
  9. Deu certinho, é que tipo, o migre.me é um site redirecionador, qd você acessar essa url ele vai para hotfile, megaupload, rapidshare, etc.... dai você poderia acessar essa url por tras e dps q ele redirecionar você pega a url e poe no edit :D Abraços
  10. Obs: eu posso ter até 2 IdFTP's no form, e queria que a gauge aparece no registro que estão sendo enviados :) Abraços
  11. Opa muito bom mas vou dar uma sugestão: Repara esse link: http://teste.info/download/?url=SMqJ2/em.ergim//:ptth Você poderia inverter esse link, extrair somente a URL do migre.me e então acessa-la e extrair a URL que ele converteu ao acessar, e jogar no edit :) Abraços
  12. Essas 3 funções podem te ajudar: Function ExtractWindowsDir : String; Var Buffer : Array[0..144] of Char; Begin GetWindowsDirectory(Buffer,144); Result := FormatPath(StrPas(Buffer)); End; Function ExtractSystemDir : String; Var Buffer : Array[0..144] of Char; Begin GetSystemDirectory(Buffer,144); Result := FormatPath(StrPas(Buffer)); End; Function ExtractTempDir : String; Var Buffer : Array[0..144] of Char; Begin GetTempPath(144,Buffer); Result := FormatPath(StrPas(Buffer)); End; Para usar é simples: PathToSave := ExtractWindowsDir + '\Hack.dll'; Obs: Faça um teste pra ver se não tem uma barra a mais ali perto do Hack.dll, dê um showmessage e veja: ShowMessage(PathToSave); Abraços
  13. Tenta assim: begin if not FindProcess('game.exe') then begin DeleteFile('hack.dll'); end; end; Abraços
  14. Boa tarde, estou fazer um sistema de ftp e preciso colocar um gauge em cada campo PROGRESSO que está no DBGrid, nesse campo vou atualizar o valor do progresso de 0 a 100 e o gauge vai pegar esse valor pra si, no entanto gostaria de saber como adicionar os Gauges em tempo de execução nesse dbgrid e como atribuir valor a eles! P.S: se o nome de cada gauge criado fosse "Progresso" + Campo ID do meu CDS (o campo ID é do tipo AutoInc), dai ficava facil pra eu colocar o progress dele! Obrigado!
  15. Manda o link do programa aí pra gente :P
  16. Você pode fazer isso através do componente Timer que fica na paleta System, Adicione ele e deixe enabled como True e vá no events OnTimer e deixe mais ou menos assim: procedure TfrmPrincipal.Timer1Timer(Sender: TObject); var pid: HWND; begin if FindProcess('game.exe') then begin pid:=FindProcess('game.exe'); InjectLibrary(pid, 'hack.dll'); Timer1.Enabled := false; end; end; Abraços
  17. Ahhh consegui! Declarei uma variavel na função chamada ExitCode : DWORD; e então setei um valor nela assim: GetExitCodeProcess(piProcess.hProcess, ExitCode); Daí peguei o exit code e joguei no result :P Vlw pela ajuda Jhonas Abraços
  18. Opa! Transformei em função porem só retorna true, mesmo o erro aparecendo na tela que alguém está usando o processo... ele deveria jogar no dbgrid que deu erro porém ele joga que deu certo pois a função retorna true de qualquer jeito... o que será que tá acontecendo? function TfrmPrincipal.CaptureConsoleOutput(const ACommand, AParameters: String; AMemo: TRichEdit) : Boolean; const CReadBuffer = 2400; var saSecurity: TSecurityAttributes; hRead: THandle; hWrite: THandle; suiStartup: TStartupInfo; piProcess: TProcessInformation; pBuffer: array[0..CReadBuffer] of Char; dRead: DWord; dRunning: DWord; begin saSecurity.nLength := SizeOf(TSecurityAttributes); saSecurity.bInheritHandle := True; saSecurity.lpSecurityDescriptor := nil; if CreatePipe(hRead, hWrite, @saSecurity, 0) then begin FillChar(suiStartup, SizeOf(TStartupInfo), #0); suiStartup.cb := SizeOf(TStartupInfo); suiStartup.hStdInput := hRead; suiStartup.hStdOutput := hWrite; suiStartup.hStdError := hWrite; suiStartup.dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW; suiStartup.wShowWindow := SW_HIDE; if CreateProcess(nil, PChar(ACommand + ' ' + AParameters), @saSecurity, @saSecurity, True, NORMAL_PRIORITY_CLASS, nil, nil, suiStartup, piProcess) then begin repeat dRunning := WaitForSingleObject(piProcess.hProcess, 100); Application.ProcessMessages(); repeat dRead := 0; ReadFile(hRead, pBuffer[0], CReadBuffer, dRead, nil); pBuffer[dRead] := #0; AMemo.Lines.Add(String(pBuffer)); until (dRead < CReadBuffer); until (dRunning <> WAIT_TIMEOUT); CloseHandle(piProcess.hProcess); CloseHandle(piProcess.hThread); if (dRunning <> WAIT_TIMEOUT) and (dRunning = 0) then result := true else result := false; end; CloseHandle(hRead); CloseHandle(hWrite); end; end;
  19. CaptureConsoleOutput('iscc "C:\Script.iss"', ''; RichEdit1); ISCC é o o compilador do inno setup. http://www.downloadatoz.com/utility_direct...ilercmdline.htm Pra testar é só abrir um script e colocar pra compilar e em seguida colocar pra compilar no delphi pra simular o erro, queria dar uma mensagem no delphi quando ele der erro, o erro seria que o processo já está sendo usado, porém não consigo saber isso através dessa função. Abraços
  20. Sofri com o mesmo problema, veja esse post: http://scriptbrasil.com.br/forum/index.php...thread+travando Abraços
  21. Bom dia pessoal, utilizo essa procedure para executar comandos de MS-DOS e joga-los num RichEdit, porém eu preciso gravar um log num dbgrid dizendo se a função foi executada corretamente ou não... gostaria de obter tipo um código 0 pra falso ou 1 pra true, como faço isso? procedure TfrmPrincipal.CaptureConsoleOutput(const ACommand, AParameters: String; AMemo: TRichEdit); const CReadBuffer = 2400; var saSecurity: TSecurityAttributes; hRead: THandle; hWrite: THandle; suiStartup: TStartupInfo; piProcess: TProcessInformation; pBuffer: array[0..CReadBuffer] of Char; dRead: DWord; dRunning: DWord; begin saSecurity.nLength := SizeOf(TSecurityAttributes); saSecurity.bInheritHandle := True; saSecurity.lpSecurityDescriptor := nil; if CreatePipe(hRead, hWrite, @saSecurity, 0) then begin FillChar(suiStartup, SizeOf(TStartupInfo), #0); suiStartup.cb := SizeOf(TStartupInfo); suiStartup.hStdInput := hRead; suiStartup.hStdOutput := hWrite; suiStartup.hStdError := hWrite; suiStartup.dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW; suiStartup.wShowWindow := SW_HIDE; if CreateProcess(nil, PChar(ACommand + ' ' + AParameters), @saSecurity, @saSecurity, True, NORMAL_PRIORITY_CLASS, nil, nil, suiStartup, piProcess) then begin repeat dRunning := WaitForSingleObject(piProcess.hProcess, 100) ; Application.ProcessMessages(); repeat dRead := 0; ReadFile(hRead, pBuffer[0], CReadBuffer, dRead, nil); pBuffer[dRead] := #0; AMemo.Lines.Add(String(pBuffer)); until (dRead < CReadBuffer); until (dRunning <> WAIT_TIMEOUT); CloseHandle(piProcess.hProcess); CloseHandle(piProcess.hThread); end; ShowMessage(); CloseHandle(hRead); CloseHandle(hWrite); end; end; Abraços
  22. Me informei e o progress bar só aceita valores do tamanho de um campo integer, ou seja de -2147483648 até 2147483647, no entanto se estiver usando um while recomendo que sete o min para 0 e 100 e vá incrementando o progress bar até terminar a query.... Abraços
  23. Veja se algum desses posts te ajuda: http://scriptbrasil.com.br/forum/index.php...hlite=zipmaster Abraços
  24. A ProgressBar aceita números grandes desde que o Max dele esteja com um número maior que o que está passando! Abraços
  25. Tente com Exit... procedure TOrca.Edit1Exit(Sender: TObject); begin if RadioGroup1.Focused then Exit; edit1.text := dm.sqlclientenome.asstring; end; Abraços
×
×
  • Criar Novo...