Ir para conteúdo
Fórum Script Brasil

Jhonas

Monitores
  • Total de itens

    9.657
  • Registro em

Tudo que Jhonas postou

  1. da uma olhada neste post ( envio de email usando componentes indy ) http://scriptbrasil.com.br/forum/index.php...st&p=470562 abraço
  2. Ajudou muito voce informar quais os componentes que esta usando; veja bem... ao usar um IBDataSet voce não tem a necessidade de usar um IBQuery1, por que no IBDataSet voce tem uma propriedade chamada SelectSQL onde voce digita a select que voce vai usar EX: Select * from GR o Datasource vai então ligado ao IBDataSet que por sua vez esta ligado ao IBDataBase onde por sua vez contem o caminho para o seu banco de dados na propriedade DatabaseName, e este esta ligado ao IBTransaction pela propriedade DefaltTransaction então neste caso o IBQuery1 esta sobrando usando os mesmos componentes e fazendo o select da tabela no IBDataSet , aqui esta funcionando certo abraço
  3. vai ai o codigo para isto function ReplicaStr(const S: string; const Len: integer): string; begin Result := ''; while Length(Result) < Len do Result := Result + S; Result := Copy(Result, 1, Len); end; procedure TForm1.Button1Click(Sender: TObject); var n : integer; begin n := edit1.MaxLength - Length(trim(edit1.text)); edit1.text := trim(edit1.text) + ReplicaStr('.',n); end; abraço
  4. outro questionamento sobre os componentes: voce esta usando o IBQuery1, DataSetProvider1, ClientDataSet1 e o DataSource1 ? e no ClientDataSet1 na propriedade ProviderName esta o DataSetProvider1 ? e esta fazendo as ligações entre os componentes corretamente ? no componente IBQuery1, quando voce clica na propriedade active deixando em true, acontece algum erro ? no componente ClientDataSet1, quando voce clica na propriedade active deixando em true, acontece algum erro ?
  5. Vamos ver se entendi... quando voce chama o form o evento FormShow voce executa o comando para abrir a query' dm.Qrgr.Open; ' ai acontece este erro este erro indica que existe um simbolo desconhecido na line 2, char 1, e voce disse que a sua select esta assim 'Select * from GR' então não dá pra enteder ... verifique novamente as suas querys, porque se nesta query existe apenas uma linha ele não poderia dar erro na linha 2 que não existe.
  6. se este comando estiver dentro da propriedade SQL da query e GR não é o nome da tabela, está errado se estiver passando o nome da tabela como paramentro, o comando select tem que ser construido via codigo alem de que esta mensagem ( 'No argument for format '%s'' tradução -> Nenhum argumento para o formato %s )indica que há mais instruções no comando melhor voce postar o codigo, para ficar mais facil responder.
  7. aparentemente estes erros referem-se ao comando que esta na SQL, poste o comando select que voce esta usando.
  8. melhor voce postar o codigo que está dando erro, fica mais facil para ajudar.
  9. tradução para o primeiro Esta demonstração tem comentário errado: {De fato, esta demonstração converte todos os quadros a Jpegs, tão só TJpegImage pode ocorrer aqui. Mas você pode usar RV_RegisterHTMLGraphicFormat para permitir outro formatos gráficos em HTML} De fato, esta demonstração salva todas as imagens em formatos como eles são. Usa evento de OnSaveImage2, e são passadas imagens a este evento sem conversão para jpegs. Com a finalidade de economia de e-mail, você deveria converter imagens a jpegs (ou png, ou gifs). Chame o código para este evento para (e adicione CRVData em uses): procedure TForm1.RichViewEdit1SaveImage2(Sender: TCustomRichView; Graphic: TGraphic; SaveFormat: TRVSaveFormat; const Path, ImagePrefix: String; var ImageSaveNo: Integer; var Location: String; var DoDefault: Boolean); var gr: TGraphic; bmp: TBitmap; begin if SaveFormat<>rvsfHTML then exit; if not (Graphic is TJPEGImage) and not RV_IsHTMLGraphicFormat(Graphic) then begin bmp := TBitmap.Create; try bmp.Assign(Graphic); except bmp.Width := Graphic.Width; bmp.Height := Graphic.Height; bmp.Canvas.Draw(0,0, Graphic); end; gr := TJPEGImage.Create; gr.Assign(bmp); bmp.Free; end else gr := Graphic; Location := Format('image%d.%s', [ImageSaveNo, GraphicExtension(TGraphicClass(gr.ClassType))]); inc(ImageSaveNo); with HTMLImages.Add as THTMLImageItem do begin gr.SaveToStream(Stream); Name := Location; ContentType := GetImageContentType(gr); end; Location := 'cid:'+Location; DoDefault := False; if gr<>Graphic then gr.Free; end; .................................................................................................................. tradução para o segundo Como enviar o documento TRichView como e-mail formatado Este exemplo usa componente de TNMSMTP Na mesma demonstração, adicione a nova função que devolve documento codificado como string. Como você pode ver, há 2 diferenças principais que comparam ao arquivo original salvando procedimento da demonstração: 1) não são incluídos cabeçalhos 2) não só HTML+images, mas uma alternativa de texto clara é incluída. uses RVUni; function TForm1.GetEMail: String; var Stream: TStringStream; Stream2: TMemoryStream; ws: WideString; s, s2: String; boundary: String; i: Integer; begin // saving text HTMLImages.Clear; Stream2 := TMemoryStream.Create; RichViewEdit1.SaveTextToStreamW('', Stream2, 80, False, False); Stream2.Position := 0; SetLength(ws, Stream2.Size div 2); if Stream2.Size<>0 then Stream2.ReadBuffer(Pointer(ws)^, Stream2.Size); s2 := MimeEncodeString(Utf8Encode(ws)); Stream2.Free; // saving HTML Stream := TStringStream.Create(''); RichViewEdit1.SaveHTMLToStreamEx(Stream, '', 'Web Archive Demo', '', '', '', '', [rvsoUseCheckpointsNames, rvsoUTF8]); s := MimeEncodeString(Stream.DataString); Stream.Free; // now s contains HTML file without images, base64-encoded. saving it in MIME boundary := '----=_BOUNDARY_LINE_'; Result := 'This is a multi-part message in MIME format.'+CRLF+CRLF+ '--'+boundary+CRLF+ 'Content-Type: text/plain;'+CRLF+ #9'charset="utf-8"'+CRLF+ 'Content-Transfer-Encoding: base64'+CRLF+CRLF+ s2+CRLF+CRLF+ '--'+boundary+CRLF+ 'Content-Type: text/html;'+CRLF+ #9'charset="utf-8"'+CRLF+ 'Content-Transfer-Encoding: base64'+CRLF+CRLF+ s+CRLF; // saving images for i := 0 to HTMLImages.Count-1 do begin s2 := CRLF+ '--'+boundary+CRLF; SetLength(s, HTMLImages[i].Stream.Size); HTMLImages[i].Stream.Position := 0; HTMLImages[i].Stream.ReadBuffer(PChar(s)^, Length(s)); s := MimeEncodeString(s); s2 := s2+'Content-Type: '+HTMLImages[i].ContentType+CRLF+ #9'Name="'+HTMLImages[i].Name+'"'+CRLF+ 'Content-Transfer-Encoding: base64'+CRLF+ 'Content-ID: <'+HTMLImages[i].Name+'>'+CRLF+CRLF+ s+CRLF; Result := Result+s2; end; Result := Result+CRLF+'--'+boundary+'--'+CRLF; HTMLImages.Clear; end; Enviando: NMSMTP1.Host := ...; NMSMTP1.Port := ...; NMSMTP1.UserID := ...; NMSMTP1.Connect; NMSMTP1.PostMessage.FromAddress := ...; NMSMTP1.PostMessage.FromName := ...; NMSMTP1.PostMessage.ToAddress.Text := ...; NMSMTP1.PostMessage.ToCarbonCopy.Text := ''; NMSMTP1.PostMessage.ToBlindCarbonCopy.Text := ''; NMSMTP1.PostMessage.Body.Text := GetEMail; NMSMTP1.PostMessage.Attachments.Text := ''; NMSMTP1.PostMessage.Subject := 'HTML Test'; NMSMTP1.PostMessage.LocalProgram := 'Demo HTML Mailer'; NMSMTP1.PostMessage.Date := ''; NMSMTP1.PostMessage.ReplyTo := ...; NMSMTP1.SendMail; The main trick is in adding headers in NMSMTP1.OnSendStart: procedure TForm1.NMSMTP1SendStart(Sender: TObject); begin NMSMTP1.FinalHeader.Add('MIME-Version: 1.0'); NMSMTP1.FinalHeader.Add('Content-Type: multipart/alternative;'); NMSMTP1.FinalHeader.Add(#9'boundary="----=_BOUNDARY_LINE_"'); end; se eu entendi direito voce joga uma imagem dentro de um documento html e depois envia por email usando os componentes indy ( não só HTML+images, mas uma alternativa de texto clara é incluída. ) abraço
  10. for i:=1 to 50 do begin if i<=20 then C[i]:=A[i] else C[i]:=B[i-20]; {A princípio tinha colocado B[i] e não dava certo} end; quando voce colocou B[i-20] ... o i representa o valor da variavel i que esta no comando for ( que varia de 1 ate 50) ou seja, voce estará subtraindo de cada valor da varavel i (20) o resultado para B[i-20]..B 1....... 1 2....... 2 3....... 3 4....... 4 5....... 5 6....... 6 7....... 7 8....... 8 9....... 9 10....... 10 11....... 11 12....... 12 13....... 13 14....... 14 15....... 15 16....... 16 17....... 17 18....... 18 19....... 19 20....... 20 1....... 21 2....... 22 3....... 23 4....... 24 5....... 25 6....... 26 7....... 27 8....... 28 9....... 29 10....... 30 11....... 1 12....... 2 13....... 3 14....... 4 15....... 5 16....... 6 17....... 7 18....... 8 19....... 9 20....... 10 21....... 11 22....... 12 23....... 13 24....... 14 25....... 15 26....... 16 27....... 17 28....... 18 29....... 19 30....... 20 for i:=1 to 20 do A[i]:=i; for i:=1 to 30 do B[i]:= i; for i:=1 to 50 do begin if i<=20 then C[i]:=A[i] else C[i]:=B[i]; end; end; isto tambem funciona e o resultado esta em acima abraço
  11. Jhonas

    Thread + Projeto

    A classe Tthread é um classe que possibilita a criação de vários threads em uma única aplicação. Cada nova instância da classe TThread é um novo thread da aplicação. Para voce implementar uma aplicação multthread basta derivar uma nova classe TThread e sobrescrever ( override) os seus metodos. Para criar uma nova classe filha de TThread, proceda da seguinte maneira 1 - Escolha a opção File / New / Thread Object para criar a nova unit que contenha a definição desta nova classe 2 - Escolha o nome da nova classe 3 - Redefina o construtor Creat da nova classe 4 - Defina o método Execute, inserindo o codigo que será executado pelo thread OBS: Não se esqueça de sempre passar qualquer chamada a um método de controle da VCL ao método Syncronize, para evitar conflitos de vários threads entre si O delphi vem com um exemplo de uma aplicação multithreads ( thrddemo.dpr ) , que está localizado no diretorio C:\Arquivos de programas\Borland\Delphi5\Demos\Threads // ou delphi7 caso não tenha conhecimento sobre este assunto, olhe este post http://scriptbrasil.com.br/forum/index.php...st&p=457455 abraço
  12. Tutorial de como colocar uma rádio on line http://www.puroaudio.com.br/simplecast/index.htm abraço
  13. mas não é poblema algum, o installshield já faz a instalação do BDE junto com o seu programa quando voce usa o installshield voce marca o BDE ( Borland Database Engine ) e o BDE Control Panel File .... se voce não definir um Alias atravez do seu programa, inevitavelmente terá que ser criado um Alias via BDE administrator que já estará instalado na maquina do cliente. exemplo: Criado Alias via programação Inclua na seção uses: DB { se o alias não existir... } if not Session.IsAlias('MeuAlias') then begin { Adiciona o alias } Session.AddStandardAlias('MeuAlias', 'C:\DiretoriodoPrograma', 'PARADOX'); { Salva o arquivo de configuração do BDE } Session.SaveConfigFile; end; abraço
  14. Jhonas

    Radio On Line

    Tutorial de como colocar uma rádio on line http://www.puroaudio.com.br/simplecast/index.htm abraço
  15. Jhonas

    ...

    http://www.carlosleopoldo.com/post/los-mej...-gratis-.co.cc/ abraço
  16. Oi Eder ... acho que voce vai encontrar algo parecido neste endereço http://www.trichview.com/forums/viewtopic.php?t=11 abraço
  17. este erro tambem pode ser de drive ... desistale e instale novamente o drive da impressora, mas troque o drive e não mantenha o existente. ve se resolve. se não resolver, tente instalar o drive da RX 80, já soluncionei este problema assim. abraço
  18. a versão oracle 10g express-edition é free ( gratis ) http://www.pplware.com/2007/01/24/oracle-1...xpress-edition/ http://www.devmedia.com.br/articles/viewco...mp=2317&hl= abraço
  19. Este é um erro de conexão entre duas máquinas atraves do clientSocket; um teste simples seria desconectar uma maquina de cada vez e testar para poder achar aquela que esta com problema; ( na maior parte das vezes é software ) outras informações https://blogs.msdn.com/malarch/archive/2006.../26/647993.aspx abraço
  20. Dica de Marcelo Silva O que você pode usar é Grants para cada banco assim você terá quantos bancos quiser cada um com suas permissões Procure saber mais sobre Grant no firebird Fazendo desta forma você até poupa memoria e processamento do servidor abraço
  21. da uma olhada neste endereço http://www.linhadecodigo.com.br/Artigo.aspx?id=946 abraço
  22. a melhor maneira de aprender é estudar como usar as funções do sybase http://php.mirror.camelnetwork.com/manual/...fered-query.php abraço
  23. create generator codcliente create trigger ai_codcliente for cliente active before insert position 0 as begin if (new.codcliente is null) then new.codcliente = GEN_ID(codcliente_gen, 1); end abraço
×
×
  • Criar Novo...