Ir para conteúdo
Fórum Script Brasil

Gustavo_Sid

Membros
  • Total de itens

    40
  • Registro em

  • Última visita

Tudo que Gustavo_Sid postou

  1. Olá amigos. Estou precisando abrir um arquivo não tão grande de tamanho, mais tem uma unica linha com 36.359.987 colunas e não consigo abrir ele pelo TextFile e nem pelo TFileStream, porque não consigo criar um vetor de Char com este tamanho para ler o arquivo. Alguém consegue me ajudar ?? Obrigado.
  2. Olá galera. Estou fazendo um sistema de backup do firebird pelo Gbak, e gostaria de pegar o retorno do Gbak. Pois pelo WinExec ou ShellExecute não consigo pegar o retorno. Tenteu também pelo CreateProcess mais tmabém não funciona. Usei o seguinte código: procedure TForm1.CaptureConsoleOutput(DosApp: string; var AMemo: TMemo); const ReadBuffer = 1048576; // 1 MB Buffer var Security : TSecurityAttributes; ReadPipe,WritePipe : THandle; start : TStartUpInfo; ProcessInfo : TProcessInformation; Buffer : Pchar; TotalBytesRead, BytesRead : DWORD; Apprunning,n, BytesLeftThisMessage, TotalBytesAvail : integer; begin with Security do begin nlength := SizeOf(TSecurityAttributes); binherithandle := true; lpsecuritydescriptor := nil; end; if CreatePipe (ReadPipe, WritePipe, @Security, 0) then begin // Redirect In- and Output through STARTUPINFO structure Buffer := AllocMem(ReadBuffer + 1); FillChar(Start,Sizeof(Start),#0); start.cb := SizeOf(start); start.hStdOutput := WritePipe; start.hStdInput := ReadPipe; start.dwFlags := STARTF_USESTDHANDLES + STARTF_USESHOWWINDOW; start.wShowWindow := SW_HIDE; // Create a Console Child Process with redirected input and output if CreateProcess(nil ,PChar(DosApp), @Security,@Security, true ,CREATE_NO_WINDOW or NORMAL_PRIORITY_CLASS, nil ,nil, start ,ProcessInfo) then begin n:=0; TotalBytesRead:=0; repeat Inc(n,1); Apprunning := WaitForSingleObject(ProcessInfo.hProcess,100); Application.ProcessMessages; if not PeekNamedPipe(ReadPipe ,@Buffer[TotalBytesRead], ReadBuffer ,@BytesRead, @TotalBytesAvail,@BytesLeftThisMessage) then break else if BytesRead > 0 then ReadFile(ReadPipe,Buffer[TotalBytesRead],BytesRead,BytesRead,nil); TotalBytesRead:=TotalBytesRead+BytesRead; until (Apprunning <> WAIT_TIMEOUT) or (n > 150); ShowMessage('Terminou'); Buffer[TotalBytesRead]:= #0; OemToChar(Buffer,Buffer); AMemo.Text := AMemo.Text + (StrPas(Buffer)); end; FreeMem(Buffer); CloseHandle(ProcessInfo.hProcess); CloseHandle(ProcessInfo.hThread); CloseHandle(ReadPipe); CloseHandle(WritePipe); end; end; O backup é feito mais não leva nada para o Memo, alguém pode me ajudar por favor ?? Obrigado.
  3. Olá amigos. Estou com um problema em acessar pastas com espaços. Quero acessar a pasta C:\Program Files\. E vou usar essa pasta para executar um comando no cmd do windows, que precisa que a pasta com espaços fique entre aspas. No meu código colocando \" não sai " e sim \". alguém poderia me ajudar. Obrigado.
  4. Consegui encontrar um código que consiga o posicionamento da barra de tarefas do windows. Estou disponibilizando para quem precisar. procedure TForm1.Button1Click(Sender: TObject); var Tasklist : HWnd; Bordered : TRect; begin Tasklist := FindWindow('Shell_TrayWnd', nil); GetWindowRect(Tasklist, Bordered); Label1.Caption := 'Left: ' + IntToStr(Bordered.Left); Label2.Caption := 'Right: ' + IntToStr(Bordered.Right); Label3.Caption := 'Top: ' + IntToStr(Bordered.Top); Label4.Caption := 'Bottom: ' + IntToStr(Bordered.Bottom); end; Obrigado pela ajuda.
  5. Quanto ao Form na tela foi resolvido. Porém, tenho vários Labels e botões na tela e os posiciono com a medida da resolução usada. Então desta forma quando usar a barra de ferramentas na lateral, ou a barra for maior, o Form ficará posicionado mais os campos não. Então acho que o ideial era eu arrumar uma forma de pegar o tamanho da barra e se possivel também saber se ela está na horizontal e vertical, desta forma consigo sempre posicionar os campos diminuindo o tamanho da barra do tamanho da tela. Entendeu ? Obrigado.
  6. Isso mesmo. Achei que seria mais complicado. Obrigado amigo.
  7. Olá Galera, Estou fazendo uma aplicação onde o Form principal tem que ocupar toda a tela e deixa visível somente a barra de ferramentas do windows onde se encontra o menu iniciar. Tive a ideia de atribuir atribuir o tamanho do Form o tamanho da tela menos o tamanho da barra de ferramentas do windows, porém não estou achando uma forma ou uma função que me retorne esse tamanho. Ficarei grato para quem puder me ajudar. Obrigado. Gustavo
  8. Olá galera. Estou fazendo uma aplicação na qual eu conecto pelo ADO num banco de dados Access onde uso uma tabela temporária. Então deleto os registros e insiro novamente. Acontece que a cada vez que insiro os registros o banco de dados aumenta de tamanho, mas ao deletar os registros o tamanho não diminiu, ou seja, quando insiro novamente ele só vai aumentando o tamanho sendo que estou deletando os registros e o tamanho não diminui. Talvez tenha que fazer algum comando para deletar os registros fisicamente alguma coisa assim, se alguém souber por favor me ajude. Obrigado. Abraços.
  9. Muito Obrigado Jhonas. Mais não será mais preciso, percebi que o Pervasive cria um ODBC, então posso usar a paleta ADO para fazer a conexão e trabalhar com o banco de dados. hehe. Muito Obrigado Mesmo.
  10. Obrigado Jhonas. O componente funcionou, porém me apareceu uma outra dúvida. Não sei se você chegou a instalar este componente, mais quando vou conectar no banco de dados Pervasive ele abre a tela para digitar usuário e senha. Tentei desmarcar e marcar as opções do componente de conexão, inclusive um componente de sessão onde você informa os dados do servidor e do banco de dados (usuário e senha), mais mesmo assim ele continua abrindo a tela para colocar usuário e senha. Queria saber se tem alguma forma de eu definir esse usuário e senha no componente para que não fique abrindo a tela para digita-los toda fez que fizer a conexão com o banco de dados Pervasive ??? Abraços. Obrigado.
  11. Olá galera do Forum. Gostaria de pedir uma ajuda. Estou desenvolvendo uma aplicação onde preciso fazer uma leitura do banco de dados Pervasive 10, acontece que não estou encontrando um componente para o Delphi que eu consigo conectar a um banco de dados Pervasive. Gostaria de saber se existe algum componente para isso ou alguma forma de conectar por ODBC ou coisa parecida, preciso de conectar ao banco para fazer leitura,edição e gravação, se alguém souber como eu faço isso pelo Delphi por favor me ajude ?? Agurado Respostas. Obrigado. Abraços.
  12. http://windows.microsoft.com/pt-BR/windows...asked-questions http://www.clubedainformatica.com.br/site/...-32-ou-64-bits/ http://www.aprendaefaca.net/2010/02/window...frequentes.html abraço Não amigo. Desculpe me expressei mal. Eu quis dizer pelo Delphi, se existe alguma função ou componente do Delphi que me de esta informação, se o sistema é 64 bits ou 32 bits? E como gravo uma chave no Windows 64 bits?? Entendeu? Abraços.
  13. Olá amigo. Digite isso no evento OnDrawCell do StringGrid: procedure TForm1.gradeDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin if gdSelected in State then grade.Canvas.Brush.Color:= clGreen; //Aqui você coloca a cor de desejar. grade.Canvas.FillRect(Rect); // redesenha a celula grade.Canvas.TextOut(Rect.Left+3,Rect.Top+2,grade.Cells[acol,arow]); end; Abraços.
  14. Olá amigos. Estou precisando de uma ajuda com registro do windows. Fiz uma rotina para inserir uma chave no registro do windows, quando utilizo no Windows XP 32 bits funciona tudo lindo, o problema é quando coloco em sistemas 64 bits, aí não insere a chave no registro. alguém pode me dizer como utilizo para 64 bits e como descobrir se o sistema é 64 ou 32 bits ??? Agradeço desde já. O codigo que utilizei foi o seguinte: procedure TfrmPricipal.prRegistrar; Var vChave: String; Registro: TRegistry; begin vChave:= 'Valor'; Registro:= TRegistry.Create; Registro.RootKey:= HKEY_LOCAL_MACHINE; Registro.OpenKey('\SOFTWARE\Sistema Contabil',true); Registro.WriteString('Valor',vChave); FreeAndNil(Registro); ShowMessage('Programa Registrado com sucesso'); end;
  15. já experimentou usar o metodo Repaint ? Va em Iniciar > Painel de Controle > Mouse > Roda ( ou scroll ) > Número de Linhas de cada vez coloque o numero de linhas que quer que role OBS: ScrollBar move linhas não colunas abraço Sim. Eu uso o Repaint. So que preciso que mova 2 colunas e não 1. Estou falando do ScrollBar Horizontal, quando o numero de colunas não cabe na tela do StringGrid aí ele coloca uma Barra Horizontal. Essa ScrollBar que to falando, e quando clica na seta para mover, ela move 1 coluna de cada vez, preciso que mova 2 colunas. Sabe como fazer ?? Abraço.
  16. Olá galera. Estou com um problema numa aplicação onde mesclo as colunas do stringgrid, o problema é que como o ScrollBar move uma coluna de cada vez não estão sendo pintadas as celulas corretamente, gosteria de uma achar uma forma de o ScrollBar mover 2 colunas cada vez que clicada no ScrollBar. alguém sabe como fazer isso?? Obrigado. Abraços.
  17. Seguinte Galera para não Criar outro Tópico vou aproveitar esse mesmo para outro problema desse mesmo programa. O problema é o seguinte: Tenho um serviço e um forma na aplicação.. acontece que o serviço so utilizo mesmo para colocar como serviço do windows é no form que tenho um TTimer para rodar as tarefas... O problema é o seguinte de alguma forma o timer está sendo entorrompido por alguma razão e estou achando que seja o serviço, como foi minha primeira aplicação utilizando serviço não sei muito bem como funciona. Enfim gostario de saber se o serviço fica executando de tempo em tempo porque crio o meu form nele e isso pode ta atrapalahando.. o Codigo é o seguinte: procedure TSID_MVEERP.ServiceExecute(Sender: TService); begin try CoInitialize(Nil); try Application.CreateForm(TfrmPrincipal, frmPrincipal); frmPrincipal.Show; except on E: Exception do ShowMessage('Erro: '+ E.Message); end; While (not(Self.Terminated)) do ServiceThread.ProcessRequests(true); finally CoUninitialize; end; end; Quero saber se isso é executado constantemente enquanto o serviço está rodando porque isso pode estar parando o Timer que tem nesse Form ??? E se for como faço para que ele fique sempre rodando mais sem criar esse form a todo momento, tentei colocar no on start do serviço mais aí está dando erro so consegui dessa forma... Abraços..
  18. abraço OK. Entendi realmente so vai dar se trocar o nome do executável. Muito obigado pela ajuda irei fazer isso. Abraços..
  19. voce não reparou ainda que é justamente o nome do executável que aparece no gerenciador de tarefas ? se voce quiser o titulo 'Integração PDV ERP', esse é que deverá ser o nome do seu executável abraço Sim é o nome do executavel que fica no gerenciador de tarefas. Mais o que eu quero é que o executável tenha um nome e quando abrir ele a aba do programa na barra de tarefas fica o texto definido no "Application.Title", isso sempre funciona para qualquer aplicação so que nessa não ta funcionando ta ficando o nome do executável, acho que talvez seja porque é um aplicação de serviço. Entendeu ?? Será que não tem outra forma para fazer isso numa aplicação de serviço?? Abraços..
  20. lendo esse artigo, voce vai entender o motivo porque os Edits ficam travados ... para solucionar o problema voce devera parar o serviço e passar os paramentros necessarios e depois inicia-lo novamente abraço Éh agora entendi. acontece que na minha aplicação quando paro o serviço o form é destruido dessa forma não vai ter jeito de passar os parametros, mas já resolvi esse problema. Crei um outro executavel para passar os parametros, assim so paro o serviço e chamo esse outro executál e depois incio o serviço novamente, dessa forma deu tudo certo. Mais muito obrigado. So tenho outra duvida, por ser um serviço não estou conseguindo colocar um título na aplicação para aparecer na barra de tarefas, uso o codigo abaixo e não funciona. Sabe o porque e se tem como resolver ??? program svrMVEpdverp; uses SvcMgr, untServico in 'untServico.pas' {SID_MVEERP: TService}; {$R *.res} begin Application.Initialize; Application.Title:= 'Integração PDV ERP'; //Aki coloco o titulo mais quando rodo aparece o nome do executavel. Application.CreateForm(TSID_MVEERP, SID_MVEERP); Application.Run; end. Obrigado. Abraços;
  21. Olá galera. Estou com um problema quando estou tentando criar um serviço em delphi para o windows. Acontece que o serviço já consegui fazer rodar, o problema é que presico de um form na aplicação, pois vou usar um banco de dados ACCESS para quardar as configurações que serviço precisa. O que está ocorrendo é o seguinte: Quando inicio o serviço criado abre o form normalmente, mais os Edits que preciso para digitar os parametros do serviço ficam travados e não deixa digitar. Aí pensei que era porque o form estava sendo criado a cada vez que o serviço rodava. Aí resolvi colocar em outro form que fica idenpendente do serviço, mais na mesma aplicação e mesmo assim os Edits ficaram travados também.. alguém sabe o que pode ser ?? E como resolvo isso?? Abraços.
  22. Jhonas. Muito Obrigado deu tudo certo agora.. Acabou que nem usei mais a query fiz tudo com o Table mesmo ficou muito mais facil. Obrigado mesmo. Abraços. Tudo de Bom.
  23. OK. brigadão amigo deu certo.. Mais agora tem outro problema.. a aplicação limpa essa tabela DBF e insere novos registros cada vez que é executada, e quando ela é limpa o tamanho dela não muda.. Por exemplo inseri os registros e ficou com 500Kb o arquivo DBF, quando rodo a rotina novamente fica com 1MB, se rodo novamente vai para 1,5MB, ou seja ela mantem o tamanho existente e aumenta 500Kb, mais se abrir o arquivo são sempre a mesma quantidade de registros. Sabe como resolver isso ?? Utilizo o camando "DELETE FROM" na query para limpar.. Aguardo. Abraços.
  24. Ola galera. Estou com um problema em uma aplicação.. Manipulo arquivos DBF que uso para integrar com minha aplicação, consigo limpar as tabelas com o comando delete.. Utilizo a query da paleta BDE.. então quando utilizo Append.. para fazer a inserção de registros da o seguinte erro : 'cannot modify a read-only dataset'.. já verifiquei se o arquivo está como somente leitura e não está, por um Manager de DBF consigu inclui registros.. Somente pelo delphi que da esse erro.. O que pode ser??? alguém tem outra solução ??
×
×
  • Criar Novo...