
Churc
Veteranos-
Total de itens
1.198 -
Registro em
-
Última visita
Tudo que Churc postou
-
Amigo isso é bemm difícil :) Dificilmente alguém vai responder assim de cara, primeiro porque tem que saber do Jogo, saber mexer com Leitura de Memória, saber qual pacote de memória ler no jogo e tal... Então realmente não é algo que se consegue saber fácil... Tibia? Se sim eu já mexi com isso sim mas faz bastante tempo, na época era aquele Tibia Antigo ainda, em meados de 2002/2003 rs E lembro que sites informavam todos os endereços de memória do Jogo, da Backpack, da água, da tela, etc... só não me lembro qual... (se não for e não sabe do que estou falando disfarça rss) Talvez isso te ajude http://scriptbrasil.com.br/forum/index.php...&hl=ReadMem abrxx
-
Que pai que é esse? Lembra-se do aniversário da fila no fim do dia? :blink: De certa forma, é melhor que não lembrar. ahuauhahuhua éée realmente, esquecer o aniversário da filha é bem desnaturado rs então pra compensar o negócio era a divorciada mesmo hehe vem com tudo :) na verdade eu ia mudar a piada original para algo que a filha pedisse pro Pai e tal, mas blzz rs abrxx
-
Opa Amigo também não tenho a menor noção de como funciona isso rs Mas sinceramente, nem vira... isso é gambiarra, uma hora ou outra da problema... ai derrepente funciona no XP mas não no Vista, funciona no Vista mas não no Seven e por ai vai... então realmente acho que nem vale a pena... rss abrxx
-
ahh ta entendi mas você que não explicou direito então, repara que você fala de "arquivo bat" e "como você faria com os parâmetros no seu projeto delphi" da impressão que você quis saber como chamar um arquivo bat e saber como passar os parametros pra ele :) No source do programa, menu "Project > View Source" voce adiciona var szParams: String = ''; procedure GetParams; var i: Integer; begin for i := 1 to ParamCount do if (i = 1) then szParams := ParamStr(i) else szParams := szParams + ' ' + ParamStr(i); end; logo após o begin você chama o GetParams; e depois em szParams está os parametros passados ao programa... begin GetParams; if Pos('bla', lowercase(szParams)) > 0 then bla; adapte da forma que desejar... seria isso?
-
Opa Tem que ser o BAT? Não pode chamar diretamente no Delphi? de qualquer forma... uses ShellAPI; const PostgreSQLPath = ''C:\Arquivos de Programas\PostgreSQL\8.1\bin\'; //Diretamente ShellExecute(Handle, nil, PChar(PostgreSQLPath + 'psql.exe'), '-h localhost -p 5432 -U postgres -d banco -f "C:\script.sql"', PChar(PostgreSQLPath), SW_SHOWNORMAL); //Bat ShellExecute(Handle, nil, 'arquivo.bat', '-h localhost -p 5432 -U postgres -d banco -f "C:\script.sql"', nil, SW_SHOWNORMAL); abrx
-
Conflito entre o Skin e o código para inserir imagem
pergunta respondeu ao Geomar Canjundo de Churc em Delphi, Kylix
Humm estranho... Mas então, funcionou certinho? era do jeito que voce queria? -
Daniel, então basta você adaptar os códigos, exemplo... Fiz no Bloco de Notas então talvez tenha algum erro rs Mas é pra você ter uma idéia :) TEnumPDF = class(TThread) private iProgress: Integer; iMax: Integer; protected procedure ShowProgress; procedure EnumFiles; procedure Add2DB; procedure Execute; override; end; var slBuff: TStringList; implementation procedure EnumFiles(szPath, szAllowedExt: String; iAttributes: Integer; Buffer: TStrings; bClear, bIncludePath: Boolean); 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 TEnumPDF.ShowProgress; begin with aguarde.FrmAguarde do begin Progresso.Max := iMax; Progresso.Position := iProgress; if Progresso = iMax then begin Progresso.Position := 1; Close; end; end; end; procedure TEnumPDF.Add2DB; var i: Integer; begin iMax := slBuff.Count; for i := 0 to Pred(slBuff.Count) do begin // desenhos tipo = 2 codigo := codigo + 1; modulo.CDS_arquivos.Append; modulo.cds_arquivosCOD_ARQ.Value := codigo; modulo.cds_arquivosNOME_ARQ.Value := slBuff[i]; modulo.cds_arquivosTIPO.Value := 2; modulo.cds_arquivos.post; iProgress := i + 1; Synchronize(ShowProgress); end; end; end; procedure TEnumPDF.Execute; var i: begin FreeOnTerminate := True; if slBuff = nil then slBuff := TStringList.Create; try EnumFiles(caminho, '*.pdf', faAnyFile - faDirectory, slBuff, False, False); finally Synchronize(Add2DB); end; FreeAndNil(slBuff); end; procedure TForm1.Button1Click.... var EnumPDF: TEnumPDF; begin EnumPDF := TEnumPDF.Create(False); end; veja se da certo abrxx
-
Eita... Estranho brother... aqui pra mim funciona direitinho... Internet Explorer 8, Windows Vista.... Qual a versao do seu IE?
-
Você fez tipo... tr.ScrolltoView(True); try i := GetCurrentWbPos(WB); finally ScrollWb(WB, i + 200); end; Fez tipo isso? abrxx
-
Um Pai sai do trabalho um pouco tarde e já a caminho de casa lembra-se que é o aniversário de sua filha. Como não tinha ainda comprado um presente, para o carro junto a uma casa de brinquedos e pergunta a vendedora: > "Quanto custa a Barbie que está na vitrine"? Com modos a vendedora responde: - "Qual das Barbie você se refere Senhor? > Pode ser qualquer uma... Responde o Pai... - Bom senhor, é que temos... - A Barbie que vai ao ginásio, por R$ 19,90 - A Barbie que joga voley, por R$ 19,90 - A Barbie que vai às compras, por R$ 19,90 - A Barbie que vai à praia, por R$ 19,90 - A Barbie que vai ao baile, por R$ 19,90 - A Barbie divorciada, por R$ 500,00 O homem, admirado, pergunta: > "E Por que razão a Barbie divorciada custa R$ 500,00 enquanto as demais custam somente R$ 19,90" ? A vendedora, com ar auto suficiente, responde: - "Senhor, é que a Barbie Divorciada vem com: - O carro do Ken; - A casa do Ken; - A casa de praia do Ken; - A lancha do Ken; - O Iate do Ken; - Os móveis do Ken; - O computador do Ken e Um AMIGO do Ken." rs
-
Opa um exemplo type TClearDB = class(TThread) private protected procedure Execute; override; procedure ClearDB; end; ... procedure TClearDB.ClearDB; begin with NomedoForm do begin if SBDesenhos.Down = true then begin // delete tudo da tabela modulo.cds_arquivos.close; modulo.sql_arquivos.sql.clear; modulo.sql_arquivos.sql.Add('DELETE FROM ARQUIVOS '); modulo.sql_arquivos.sql.Add('WHERE TIPO = 2 '); modulo.sql_arquivos.ExecSQL(); end; end; end; procedure TClearDB.Execute; begin FreeOnTerminate := True; //limpa da memória ao finalizar Synchronize(ClearDB); //faz a limpeza do banco de dados sem travar o programa end; procedure TForm1.Button1Click.... var ClearDB: TClearDB; begin //o False indica que a thread sera iniciada assim q ela for criada... //se colocar True, depois só chamar ClearDB.Resume pra iniciá-la ClearDB := TClearDB.Create(False); end; De uma olhada neste tópico também... http://scriptbrasil.com.br/forum/index.php?showtopic=136897 entendeu? abrxxx
-
fala rapazz :D aqui foi direitinho, testa ai function GetCurrentWbPos(wb: TWebBrowser): Integer; var documento: IHTMLElement2; begin Result := 0; if not Assigned(wb.Document) then Exit; documento := (wb.Document as IHTMLDocument3).documentElement as IHTMLElement2; if not Assigned(documento) then documento := (wb.Document as IHTMLDocument2).Body as IHTMLElement2; Result := documento.scrollTop; end; procedure ScrollWb(wb: TWebBrowser; i: Integer); var documento: IHTMLElement2; begin if not Assigned(wb.Document) then Exit; documento := (wb.Document as IHTMLDocument3).documentElement as IHTMLElement2; if not Assigned(documento) then documento := (wb.Document as IHTMLDocument2).Body as IHTMLElement2; documento.scrollTop := i; end; procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin i := GetCurrentWbPos(WebBrowser1); ScrollWb(WebBrowser1, i + 200); end; se não está descendo o suficiente, aumente de 200 ou diminua conforme necessidade abrxx
-
claro brother pode sim :) abrx
-
Conflito entre o Skin e o código para inserir imagem
pergunta respondeu ao Geomar Canjundo de Churc em Delphi, Kylix
Opa Brother porque você está usando o Clipboard? tente assim var Jpeg: TJPEGIMAGe; begin if OpenPictureDialog1.Execute do begin Jpeg:= TJPEGIMAGe.Create; Jpeg.LoadFromFile(OpenPictureDialog1.FileName); Foto.Picture.Assign(Jpeg); Jpeg.free; end; end; abrxx -
Fala brother então, tambem curioso fiquei tentando rs até porque se mostra no browser, independente do que seja tipo javascript ou não, teria que ter uma forma de conseguir isso... o segredo ta no seguinte, o Orkut emula um frame "quase" que invisível e isso que estava "impedindo" ou melhor, dificultando conseguir pegar o "texto" da página... repara que quando você faz login no Orkut, lá emcima aparece tipo uma linha escura, na verdade é um Frame... a solução foi primeiro obter o frame e depois o texto pra testar, coloque um TWebBrowser um TButton e um TMemo... procedure TForm1.Teste; var documento: IHTMLDocument2; index: OleVariant; elementos: IHTMLElementCollection; frame_dispatch: IDispatch; framewnd: IHTMLWindow2; framedoc: IHTMLDocument2; begin documento := WebBrowser1.Document as IHTMLDocument2; index := 0; frame_dispatch := documento.Frames.Item(index); if Assigned(frame_dispatch) then begin framewnd := frame_dispatch as IHTMLWindow2; framedoc := framewnd.document; Memo1.Text := framedoc.Get_body.Get_outerText; end; end; depois só chamar Teste e no Memo aparecerá o conteúdo :) abrxx
-
Opa Seguinte, ComboBox1.Text retorna todos os items que tem no Combobox... Faça um teste... ShowMessage(Combobox1.Text); voce visualizará todos os items do combobox e não um item em específico... o correto neste caso seria for i := 0 to ComboBox1.Items.count -1 do TerminateEXE(ComboBox1.Items[i]); abrxx
-
Opa Então, complicado... Porque assim, a única maneira de você não ter o Access Violation até onde sei é carregando a DLL em tempo de execução, agora... antes de tudo me diz uma coisa, imagina que a DLL não exista ou não seja encontrada... então seu programa não poderá ser usado certo? Se caso sim, o que você pode fazer é, vai no Source do Aplicativo através do Menu Project > View Source e logo depois do begin que tem a criação dos Forms (Application.CreateForm...) você faz algo tipo... uses SysUtils; ... begin if not FileExists('caminho_da_DLL.dll') then begin MessageBox(0, 'DLL não encontrada tal tal tal', 'Erro', MB_OK or MB_ICONERROR); Exit; end; ... Application.CreateForm.... massss nem sei se funcionaria, foi só uma idéia que me veio em mente agora estou sem o Delphi aqui :/ pela lógica, o código que voce importa a DLL fica na Unit exemplo function Teste; StdCall; External 'nome_da_DLL.dll'; então verificando na Inicialização do Programa talvez funcione... teste ai :D se servir maravilha, senao acho que só do jeito que passei mesmo rs abrxxx
-
Opa então, o que voce teria que fazer é, carregar a DLL em tempo de execução (Run-Time)... vou fazer como exemplo uma function e uma procedure... ** GLOBAL ** (ou seja pra ambos, exe -> dll) type TTeste1Proc = record Proc: procedure; StdCall; hLib: THandle; end; TTeste2Func = record Func: function: Boolean; StdCall; hLib: THandle; end; ** DLL ** procedure Teste1; StdCall; begin ShowMessage('Teste'); end; function Teste2: Boolean; StdCall; begin Result := True; end; exports Teste1. Teste2; ** EXE ** procedure Teste1; var Teste1Proc: TTeste1Proc; begin with Teste1Proc do begin hLib := LoadLibrary(PChar('caminho_da_DLL.dll')); if hLib <> 0 then begin @Proc := GetProcAddress(hLib, 'Teste1'); if Assigned(Proc) then try Proc; finally FreeLibrary(hLib); end else ShowMessage('Procedure não encontrada na DLL'); end else ShowMessage('DLL não encontrada!!'); end; end; function Teste2: Boolean; var Teste2Func: TTeste2Func; begin Result := False; with Teste2Func do begin hLib := LoadLibrary(PChar('caminho_da_DLL.dll')); if hLib <> 0 then begin @Func := GetProcAddress(hLib, 'Teste2'); if Assigned(Func) then try Result := Func; finally FreeLibrary(hLib); end else ShowMessage('Function não encontrada na DLL'); end else ShowMessage('DLL não encontrada'); end; end; qualquer dúvida, poste ai... abrxxx
-
Opa Cara sem dúvida Delphi é a linguagem de programação mais fácil de aprender, e o compilador assim como a IDE também detalhe que no Delphi você faz qualquer coisa assim como você faria em qualquer linguagem de programação... exceto algumas coisas que vou citar abaixo rs A linguagem de programação avançada mais usada é C, C++ como exemplo, os sistemas operacionais são tudo programados assim... você não consegue programar em Delphi um sistema operacional, como também não consegue desenvolver Drivers para Windows... Enfim, se não for fazer nada fora do comum, como um Sistema Operacional ou um Driver o Delphi é uma ótima escolha... Quanto a versão, recomendo da 2007 pra cima, pois já tem muito mais compatibilidades com o Vista por exemplo, e até o Seven! essa é minha opinião hehe abrxx
-
(Resolvido) O Identificador da Janela é Invalido - Thread Downloads
pergunta respondeu ao Douglas Soares de Churc em Delphi, Kylix
Fala brother que bom que deu tudo certo :D então quanto ao MSN eu até tenho ainda mas nem entro, a muié não deixa :ninja: rss é deu muitos rolos, brigas e tal por causa de MSN, Orkut então resolvemos bani-los hehe mas então, quando tiver alguma dúvida, poste no fórum mesmo, se eu não souber ajudar outra pessoa sabe e por ai vai :) valeuu é noixx abrxxxx -
Opa Isso vai te ajudar, só basta você adaptar as suas necessidades... http://delphi.about.com/od/adptips2004/a/bltip1004_3.htm abrxxx
-
Opa A resposta para seus problemas se chama Thread Da uma olhada http://greatis.com/delphicb/tips/lib/appli...ynchthread.html http://scriptbrasil.com.br/forum/index.php?showtopic=136897 abrxxx
-
botão "insert" ficar apertando em meio e meio segundo
pergunta respondeu ao soluvel de Churc em Delphi, Kylix
Opa Abra um novo projeto, coloque um TTimer no Form... Coloque o intervalo (Interval) de 500 referente a meio segundo... se fosse 1 segundo seria 1000 e no evento onTimer do TTimer você chama... keybd_event(VK_INSERT, 0, 0, 0); e na propriedade Active você seta True para ativar e False pra desativar o Timer abrxx -
(Resolvido) Como criar um array de ClientDataSet
pergunta respondeu ao Alexandre Malta de Churc em Delphi, Kylix
Opa Antes de voce criar você precisa setar o tamanho de sua array, já que você não setou na variável (array [0..10] of TClientDataSet; nessa caso voce tem 10 do mesmo) SetLength(_Cds, x) onde x é referente ao número de ClientDataSets que deseja criar... depois você pode chamar o _Cds(x) := TClientDataSet.Create(nil); exemplo var i: Integer; begin SetLength(_Cds, 10); //damos a ela 10 items for i := 0 to 9 do _Cds[i] := TClientDataSet.Create(nil); já que voce está passando nil como Owner, não se esqueça de depois limpar da memória na hora de encerrar o uso dos mesmo ou do aplicativo e pra pegar o tamanho da array voce pode usar o Lenght(_Cds); toda array começa com 0 como index inicial então sempre que for fazer um loop ou chamar uma array, sempre faça do 0 até um número anterior ao tamanho total exemplo 2 var i: Integer; begin SetLength(_Cds, 10); //damos a ela 10 items for i := 0 to Lenght(_Cds) - 1 do // ouu for i := 0 to Pred(Length(_Cds)) do (Pred = Predecessor) _Cds[i] := TClientDataSet.Create(nil); abrxx