Jump to content
Fórum Script Brasil

luizf

Membros
  • Posts

    80
  • Joined

  • Last visited

About luizf

Perfil

  • Gender
    Male
  • Location
    Itapetiniga-SP

luizf's Achievements

0

Reputation

  1. Erro..... A tabela existe, os dados são exibidos normalmente, mas quando clico na titulo da coluna, dá erro. .
  2. E com o exemplo do Douglas Soares, testei com outro parecido, que usa ClientDataSet, troquei neste anterior por uma dica que encontrei na net, mas o erro foi parecido. Com CDS, erro: T+
  3. Pessoal, valeu pela ajuda, mas continua dando erro. Micheus, tentei com seu exemplo, de novo, pois já havia tentando dessa maneira, não sei mas acho que é problema com os numeros, para ordenar, precisar ser string? Erro: O erro, sempre é nessa linha Token. T+
  4. Resolvido. Na minha rotina, tem a seguinte linha: SetLength(NomeArrastado, BufferSize +1); { O +1 é p/ nulo do fim da string } Em outro caso, estava funcionando perfeitamente, mas era pego de um Memo, então acredito que não dava erro, porque entra no mesmo caso do Edit, eu acho. Então só tirei o +1, ficando: SetLength(NomeArrastado, BufferSize); Obrigado
  5. Tentei fazer assim... procedure TForm1.DBGrid1TitleClick(Column: TColumn); var Campo: String; I: Integer; begin Campo:= Column.Fieldname; // Campo recebe o nome da coluna clicada Application.Processmessages; // Para considerar algo que aconteça no dbgrid durante a entrada nesta procedure Query1.SQL.Clear; Query1.SQL.Add('SELECT * FROM ' + ADOTable1.TableName + ' ORDER BY ' + Campo + ' DESC'); if not Query1.Prepared then Query1.Prepare; Query1.Open; end; E continua dando erro.
  6. Não sei o que, e como acontece. Em um dbgrid, usando DragDrop, tenho uma rotina que pega o Path do que esta sendo arrastado e outro que pega o tamanho do Path e adiciona ao banco de dados. O problema é que ao pegar o tamanho esta dando erro por causa desse '#0'. Debugando, percebi que é adicionado ao Path esse #0. Subondo que o Path seja: C:\Teste Ao passar o Path para rotina em forma de String, esta ficando assim: 'C:\Teste'#0 O problema não é com a rotina, sei porque já usei antes e funciona perfeitamente. Por isso tentei fazer o seguinte, ao invés de mandar o Path para rotina, mandei para um Edit e do Edit para rotina, funcionou. Ficando mais ou menos assim: Edit1.Text:= Path; Rotina(Edit1.Text); Mas esse Edit no form coloquei só pra testar, ele não vai ficar lá. O que é esse #0 e como eliminá-lo ou algo parecido? T+
  7. Pois é, já estava colocando no evento OnTitleClick do DBGrid, mas quando clico no titulo trava e dá erro. A ultima mensagem de erro apareceu: Invalid use of keyword. Token: ? Line Number : 1. Onde esta escrito: SQL.Add('select * from Div1 order by ' + Campo + 'ASC' ); Acho que estou errando nesse Div1 e/ou ASC. Não dá pra voce, ou alguém, me passar um exemplo, eu tento mudar para o que preciso. Só pra constar: Os campos (colunas) que quero ordenar, há > coluna com valores reais, > coluna com valores inteiros e > coluna com valores string Não sei se tem diferença pra ordenar, conforme o tipo. T+
  8. Bom, tentei fazer desse jeito, sobre as extensões, mas lembrei, que as vezes em um download e outro, e outras coisas, tem arquivos sem extensão, quando se tem noção do que é voce pode renomear e colocar a extensão correta, numa boa, já acontenceu comigo varias vezer, principalmente com arquivos da faculdade que mandam por email. O quero dizer é o seguinte, como o arquivo em questão não tem extensão, o programa consideraria com pasta e iria causar um erro, certo? Mas com sua dica, acabei tendo uma ideia. Supondo que é um Memo que vai receber o que eu arrastar com o DragDrop. var I: Integer; Tipo: String; TamanhoDir: Extended; begin TotalSizeDir:= 0; TamanhoDir:= 0; for I:= 0 to Memo1.Lines.Count -1 do begin if FileExists(Memo1.Lines.Strings[I]) then begin // Se tipo for arquivo TamanhoDir:= TamArquivo(Memo1.Lines.Strings[I]); Tipo:= 'Arquivo'; end else if DirectoryExists(Memo1.Lines.Strings[I]) then begin // Se tipo for pasta Find(Memo1.Lines.Strings[I]); TamanhoDir:= TotalSize; Tipo:= 'Pasta'; end else // se não encontrar a pasta ou arquivo, então tipo vazio Tipo:= ''; if Tipo <> '' then begin ..... Grava TamanhoDir; Grava Tipo; etc... ..... end; end; Bom, comigo funcionou certinho, se no Memo tinha um arquivo com ou sem extensão, fazia o que era pra fazer com arquivos, pegar tamanho e outros, o mesmo para pasta, e tinha um Path com com nome invalido ou uma linha vazia, não fazia nada. O que acha, por mim caso encerrado. Obrigado pela ajuda. (Resolvido)
  9. Só umas coisinhas que alterei. No Label2 em: Não é Mb, é Kb, mas tudo bem. Então acrescentei, para efeito de teste. Label1.Caption:='Total size = '+formatfloat(',0.00',(TotalSize)) + ' bytes'; Label2.Caption:='Total size = '+formatfloat(',0.00',(TotalSize / 1024)) + ' Kb'; Label3.Caption:='Total size = '+formatfloat(',0.00',(TotalSize / 1024 / 1024)) + ' Mb'; Label4.Caption:='Total size = '+formatfloat(',0.00',(TotalSize / 1024 / 1024 / 1024)) + ' Gb'; O resultado foi: Total size = -1.061.822.231,00 bytes Total size = -1.036.935,77 Kb Total size = -1.012,63 Mb Total size = -0,99 Gb Algo saiu errado, tamanho negativo, e o diretorio que usei para teste tem 99,0 GB. Então lembrei de uma papo a poucos dias em um outro tópico, e troquei o Integer por Extended, ficando assim: var Form1: TForm1; TotalSize: Extended; Com os Labels do mesmo jeito, o resultado foi: Total size = 106.312.360.169,00 bytes Total size = 103.820.664,23 Kb Total size = 101.387,37 Mb Total size = 99,01 Gb Maravilha. Encontrei um programa que tem um exemplo de como pegar o tamanho da pasta, mas pega de um componente visual, e pretendo colocar o código acima em DragDrop. Mas de qualquer forma se puder dar uma olhada. http://delphi.about.com/library/weekly/aa081605a.htm http://delphi.about.com/library/weekly/code/foldersize.zip://http://delphi.about.com/library/wee...dersize.zip Mais uma coisa, com disse vou usar em um DragDrop, ao extrair o Path, como posso verificar se um arquivo ou uma pasta? Quanto ao tamanho do diretório, tudo Ok, obrigado. T+
  10. Como posso obter o tamanho de diretorios em delphi? Há alguma função pronta? Pra tamanho de arquivo, eu achei, mas pra tamanho de diretorio, não. Mas uma coisa, como posso verificar se um Path é um arquivo qualquer ou um diretorio. Supondo que tenho um Memo ao arrastar (DragDrop) o arquivo ou pasta em cima do Memo, ira ser pego o Path e preciso que adicione em um outro memo ou edit qualquer a indicação se é uma pasta ou se é um arquivo. T+
  11. Eu gostaria de ordenar coluna em ordem crescente ou decrescente, achei este codigo na net: var Campo: String; I: Integer; begin Campo:= Column.Fieldname; // Campo recebe o nome da coluna clicada Application.Processmessages; // Para considerar algo que aconteça no dbgrid durante a entrada nesta procedure for I:= 0 to DBGrid1.Columns.Count-1 do DBGrid1.Columns[I].Title.Font.Color := clBlack; with Query1 do begin SQL.Clear; // Limpa a Query SQL.Add('select * from Div1 order by ' + Campo + 'ASC' ); // ESCREVE O SELECT COM O ORDER BY // SELECT * FROM Customers ORDER BY DOB ASC if not Prepared then begin Prepare; Open; // ABRE A QUERY COM A ORDEM ESCOLHIDA. end; end; // with DataModule2.Query_ListaGrav Column.Title.Font.Color:= clBlue; Column.Font.Color:= clBlue; // COLOCAR A COLUNA NA COR DESEJADA end; Mas esta dando erro. E trava o programa. Estou usando um DataSource e um ClientDataSet que salva os dados em um arquivo xml, que fica numa pasta chamada Dados, no diretorio do executavel , por causa desse codigo que achei, adicionei uma Query. Aproveitando o tópico, outra coisa que gostaria, era de exibir ou ocultar linha(s) que possuir uma determinada substring, exemplo. Há uma coluna nomes com os dados (exemplo). ABC - CDX - AGE FGH - KEH - GLV KUI - HUI - ABC Quero ocultar ou excluir as linha que contenham ABC, então a linha 1 e a 3 é ocultada ou exibida, conforme alguma botão clicado ou coisa assim. Obrigado
  12. E quando a varialvel para salvar o Form, com posso fazer? Obrigado.
  13. Beleza, agora me dá uma idéia, coloquei um ProgressBar no meu programa, para se ter uma idéia de quanto falta para acabar o processamento. Mas, o resultado de onde é atualizado o ProgressBar, é um valor Extended, então fiz assim: ProgressBar1.Max:= Trunc(ValorExtended); ProgressBar1.Position:= ProgressBar1.Position +1; Com valores pequenos, ou até onde aceita o Position, beleza, mas tem valores em que tem processamento a rodar, mas estourou o inteiro. Que idéia voce me dá para contornar isso? Eu estava pensado em fazer algo como pegar o valor do Extended e usar no ProgressBar1 em escala menor, exemplo. unit Unit1; interface uses...... ...... var DV: Integer; implementation ...... ...... var PosPB: Integer; begin DV:= 2; while ValorExtended > High(Integer) do begin ValorExtended:= ValorExtended / DV; DV:= DV+1; end; ProgressBar1.Max:= Trunc(ValorExtended); end; ...... E para atualizar o ProgressBar. if (Trunc(ValorExtended / DV) ) > ProgressBar1.Position then ProgressBar1.Position:= ProgressBar1.Position +1; O que acha, é possível? Alguma idéia melhor? Obrigado...
  14. ========================================================== Mais uma coisa, hoje estava alterando algumas coisas nessa minha biblioteca, e no começo da unit apareceu isso: {$A8,B-,C+,D+,E-,F-,G+,H+,I+,J-,K-,L+,M-,N+,O+,P+,Q-,R-,S-,T-,U-,V+,W-,X+,Y+,Z1} {$MINSTACKSIZE $00004000} {$MAXSTACKSIZE $00100000} {$IMAGEBASE $00400000} {$APPTYPE GUI} {$WARN SYMBOL_DEPRECATED ON} {$WARN SYMBOL_LIBRARY ON} {$WARN SYMBOL_PLATFORM ON} {$WARN UNIT_LIBRARY ON} {$WARN UNIT_PLATFORM ON} {$WARN UNIT_DEPRECATED ON} {$WARN HRESULT_COMPAT ON} {$WARN HIDING_MEMBER ON} {$WARN HIDDEN_VIRTUAL ON} {$WARN GARBAGE ON} {$WARN BOUNDS_ERROR ON} {$WARN ZERO_NIL_COMPAT ON} {$WARN STRING_CONST_TRUNCED ON} {$WARN FOR_LOOP_VAR_VARPAR ON} {$WARN TYPED_CONST_VARPAR ON} {$WARN ASG_TO_TYPED_CONST ON} {$WARN CASE_LABEL_RANGE ON} {$WARN FOR_VARIABLE ON} {$WARN CONSTRUCTING_ABSTRACT ON} {$WARN COMPARISON_FALSE ON} {$WARN COMPARISON_TRUE ON} {$WARN COMPARING_SIGNED_UNSIGNED ON} {$WARN COMBINING_SIGNED_UNSIGNED ON} {$WARN UNSUPPORTED_CONSTRUCT ON} {$WARN FILE_OPEN ON} {$WARN FILE_OPEN_UNITSRC ON} {$WARN BAD_GLOBAL_SYMBOL ON} {$WARN DUPLICATE_CTOR_DTOR ON} {$WARN INVALID_DIRECTIVE ON} {$WARN PACKAGE_NO_LINK ON} {$WARN PACKAGED_THREADVAR ON} {$WARN IMPLICIT_IMPORT ON} {$WARN HPPEMIT_IGNORED ON} {$WARN NO_RETVAL ON} {$WARN USE_BEFORE_DEF ON} {$WARN FOR_LOOP_VAR_UNDEF ON} {$WARN UNIT_NAME_MISMATCH ON} {$WARN NO_CFG_FILE_FOUND ON} {$WARN MESSAGE_DIRECTIVE ON} {$WARN IMPLICIT_VARIANTS ON} {$WARN UNICODE_TO_LOCALE ON} {$WARN LOCALE_TO_UNICODE ON} {$WARN IMAGEBASE_MULTIPLE ON} {$WARN SUSPICIOUS_TYPECAST ON} {$WARN PRIVATE_PROPACCESSOR ON} {$WARN UNSAFE_TYPE OFF} {$WARN UNSAFE_CODE OFF} {$WARN UNSAFE_CAST OFF} Como isso nunca aconteceu comigo, não imagino o que seja. Posso apagar? .
  15. Tenho algumas bibliotecas .pas e para não ficar adicionando linhas em programas/projetos novos, criei e estou criando mais algumas. Então é só declará-las e boa. Mas tem funções que precisam, por exemplo, trocar o Caption do Label1, mas, na biblioteca não posso somente usar: Label1.Caption Tenho de usar: Form1.Label1.Caption Não sei se isso é normal, pois sobre Delphi estou aprendendo sozinho e com ajuda da net. E para quando for fazer algo novo, não ter que ficar trocando todos nomes, tentei fazer o seguinte, na bibioteca, fiz assim: unit U_Biblioteca; interface uses Forms, SysUtils, Classes, StdCtrls, StrUtils; //------ Declaração //------ Procedures e Functions var Formulario: TForm; implementation uses Unit1; //------ Procedures e Functions ...... ...... ...... end. E no form principal, fiz procedure TForm1.FormCreate(Sender: TObject); begin Formulario:= Form1; end; Mas, não reconhece o componente que vem após Formulario, que ficaria assim: Formulario.Label1.Caption:= 'nonono'; Deste jeito, Form1.Label1.Caption, normal. É possivel fazer algo?
×
×
  • Create New...