BHAMF Posted May 8, 2017 at 09:34 PM Report Share #604062 Posted May 8, 2017 at 09:34 PM Olá! Lá estou eu aqui de volta 🙂 Minha dúvida é, tem como eu colocar meu programa (Pascal) para se comunicar com um servidor e perguntar para o servidor se existe alguma atualização para tal programa? Ou seja, o próprio programa verificar se há atualizações para ele mesmo. Só que o problema é saber se isso é possível em Pascal... É possível soldados? Espero a resposta. Obrigado desde já! 08/05/2017 18:34 Brasil (Horário de Brasília) Brenio Hallison A.M. Filho Link to comment Share on other sites More sharing options...
nunopicado Posted May 8, 2017 at 10:17 PM Report Share #604064 Posted May 8, 2017 at 10:17 PM Sim, com certeza. Isso requer alguma estruturação, pois precisas de ter um servidor sempre disponível (recomenda-se redundância, o que obriga a teres código para lidar com ela). Existem alguns componentes já prontos para isso (salvo erro a TMS tem um), que facilitam a implementação, mas é sempre possível fazer de raiz. "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
BHAMF Posted May 10, 2017 at 02:53 PM Author Report Share #604125 Posted May 10, 2017 at 02:53 PM Sei, a minha estratégia era a seguinte: Como não sei lidar muito ainda com servidores, iria pedir para o meu aplicativo baixar um arquivo de texto, lá teria dizendo se haveria uma atualização nova ou não, caso tivesse, ele baixaria o novo executável dele mesmo só que atualizado, após isso, ele executaria o programa baixado, e o programa baixado excluiria o antigo, tomando assim seu lugar! Porém não tenho a mínima ideia de como fazer isto! Será que podem me ajudar? Obrigado desde já! 10/05/2017 11:36 Brasil (Horário de Brasília) Brenio Hallison A.M. Filho Link to comment Share on other sites More sharing options...
nunopicado Posted May 10, 2017 at 08:20 PM Report Share #604133 Posted May 10, 2017 at 08:20 PM A estratégia parece-me bem. Ficheiro de texto com a versão actualizada, e ficheiro de update para download (recomendo que seja um ZIP que depois será extraído). Quanto à forma de fazer, vai depender de vários detalhes de implementação, especialmente de qual compilador vais usar. 1 Report "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
BHAMF Posted May 11, 2017 at 09:29 PM Author Report Share #604158 Posted May 11, 2017 at 09:29 PM Estou utilizando o Lazarus, não tenho a mínima de ideia quanto os códigos... 11/05/2017 18:29 Brasil (Horário de Brasília) Brenio Hallison A.M. Filho Link to comment Share on other sites More sharing options...
BHAMF Posted May 11, 2017 at 09:48 PM Author Report Share #604159 Posted May 11, 2017 at 09:48 PM (edited) Em 10/05/2017 às 17:20, nunopicado disse: A estratégia parece-me bem. Ficheiro de texto com a versão actualizada, e ficheiro de update para download (recomendo que seja um ZIP que depois será extraído). Quanto à forma de fazer, vai depender de vários detalhes de implementação, especialmente de qual compilador vais usar. Quanto ao ZIP, não irá se necessitar, pois criei um sistema no qual o programa se auto-instala caso os arquivos para o programa funcionar não existam, entáo só precisarei baixar o executável 11/05/2017 18:47 Brasil (Horário de Brasília) Edited May 11, 2017 at 09:49 PM by BHAMF Erros de ortografia Brenio Hallison A.M. Filho Link to comment Share on other sites More sharing options...
nunopicado Posted May 12, 2017 at 03:52 PM Report Share #604187 Posted May 12, 2017 at 03:52 PM O que te recomendo é que instales o package Synapse no teu Lazarus. Entre outras ferramentas, dá-te possibilidade de fazer download de ficheiros da internet. Tens aqui indicação de como fazer: http://wiki.freepascal.org/Synapse "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
BHAMF Posted December 19, 2017 at 02:52 PM Author Report Share #608628 Posted December 19, 2017 at 02:52 PM Olá! Prosseguindo com o tópico, eu baixei o package Synapse, mas não estou sabendo como utiliza-lo, achei a função que eu quero no documento que me mandastes, esta é a função que eu quero: function DownloadFTP(URL, TargetFile: string): boolean; const FTPPort=21; FTPScheme='ftp://'; //URI scheme name for FTP URLs var Host: string; Port: integer; Source: string; FoundPos: integer; begin // Strip out scheme info: if LeftStr(URL, length(FTPScheme))=FTPScheme then URL:=Copy(URL, length(FTPScheme)+1, length(URL)); // Crude parsing; could have used URI parsing code in FPC packages... FoundPos:=pos('/', URL); Host:=LeftStr(URL, FoundPos-1); Source:=Copy(URL, FoundPos+1, Length(URL)); //Check for port numbers: FoundPos:=pos(':', Host); Port:=FTPPort; if FoundPos>0 then begin Host:=LeftStr(Host, FoundPos-1); Port:=StrToIntDef(Copy(Host, FoundPos+1, Length(Host)),21); end; Result:=FtpGetFile(Host, IntToStr(Port), Source, TargetFile, 'anonymous', 'fpc@example.com'); if result=false then writeln('DownloadFTP: error downloading '+URL+'. Details: host: '+Host+'; port: '+Inttostr(Port)+'; remote path: '+Source+' to '+TargetFile); end; Porém não sei em qual arquivo está as procedures presentes no código acima. Pensava eu que a Synapse era uma unit só, mas é um conjunto de units, como vou saber em qual delas está as funções e procedures presentes no código acima? Obrigado, esperando respostas! B.H.A.M.F | 11:52 19/12/2017 (Horário de Brasília) Brenio Hallison A.M. Filho Link to comment Share on other sites More sharing options...
BHAMF Posted December 19, 2017 at 03:34 PM Author Report Share #608629 Posted December 19, 2017 at 03:34 PM Já está tudo resolvido, podem encerrar o tópico! Já descobri onde se encontrava tal function, ela se encontra na unit ftpSend, a maneira com qual resolvi meu código é esta: (os asteriscos são para proteção das minhas informações) program ftp; uses Crt, blcksock, synautil, synaip, synsock, Classes, Sysutils, ftpsend; begin FtpGetFile('**.***.***.***', '**', '/public_html/index.html', 'D:\Programas\Programas pascal\testes synapse\ftp\d\index.html', '*********', '*********'); readln; end. { function FtpGetFile (const IP, //ip do server Port, /porta do server FileName, /nome do arquivo junto à sua localização LocalFile, /onde o arquivo vai ser colocado ao ser baixado + nome novo do arquivo User, /nome de usuário FTP Pass: string): Boolean; / senha do servidor FTP } Obrigado à todos do Portugal a Programar! Podem fechar este tópico se quiserem já! :D_ B.H.A.M.F | 12:34 19/12/2017 (Horário de Brasília) Brenio Hallison A.M. Filho Link to comment Share on other sites More sharing options...
nunopicado Posted December 19, 2017 at 06:49 PM Report Share #608642 Posted December 19, 2017 at 06:49 PM @BHAMF, ainda bem que já resolveste, ia agora a responder-te. Mas permite-me uma recomendação: begin FtpGetFile('**.***.***.***', '**', '/public_html/index.html', 'D:\Programas\Programas pascal\testes synapse\ftp\d\index.html', '*********', '*********'); readln; end. Nunca, mas mesmo nunca, NUNCA... 😛 Uses caminhos absolutos dentro do programa, especialmente, caminhos locais. Aquele D:\XPTO\PardaisAoNinho que ali tens é o suficiente para te quebrar o programa caso haja necessidade de reinstalar (ou até de instalar num PC diferente, por exemplo, com o Windows em Inglês). Aliás, basta a pasta não existir e já tens problemas. Mesmo que neste caso concreto até possa não ser grave (não sei qual a utilidade desse software), faz com que seja uma regra nunca o fazeres. Ou vais buscar o caminho por parametro do executável, ou num ficheiro de configurações... qualquer coisa. Mas nunca um caminho absoluto. 1 Report "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to comment Share on other sites More sharing options...
BHAMF Posted January 7, 2018 at 11:57 AM Author Report Share #608845 Posted January 7, 2018 at 11:57 AM (edited) Claro, isto já foi corrigido @nunopicado :)) só peguei um trecho do código de exemplo e esqueci de apagar esta parte, obrigado por toda a ajuda do Portugal a Programar! B.H.A.M.F 08:56 07/01/2018 (Horário de Brasília) Edited January 7, 2018 at 11:57 AM by BHAMF Brenio Hallison A.M. Filho Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now