Recent

Author Topic: Reading a text file from a web-site.  (Read 32254 times)

taazz

  • Hero Member
  • *****
  • Posts: 5368
Re: Reading a text file from a web-site.
« Reply #15 on: December 04, 2017, 02:27:06 am »
I understand what you are suggesting lainz but don't see how a second file really helps.

I don't want to DOWNLOAD a file (the URL-version.txt you suggest) to then read what it contains. That means that the user has to make a decision as to where to save it and that could be done with the original file. I just need to read the DATE of the file; if I could read the contents of the URLs-Version.txt file I could also read the contents of the URLs.TXT file which would negate the need to read its date.
so don't make it a txt file make it a static html file and read its contents instead.
Good judgement is the result of experience … Experience is the result of bad judgement.

OS : Windows 7 64 bit
Laz: Lazarus 1.4.4 FPC 2.6.4 i386-win32-win32/win64

lainz

  • Hero Member
  • *****
  • Posts: 4725
  • Web, Desktop & Android developer
    • https://lainz.github.io/
Re: Reading a text file from a web-site.
« Reply #16 on: December 04, 2017, 02:59:42 am »
J-G you need to download something to get it's date, it's how internet works =)
https://stackoverflow.com/questions/1034794/last-modified-date-of-a-file-on-a-web-site

You can try to code some PHP if your server allows it, to get the date of the file and return that, instead of creating the urls-version.txt

PHP documentation of filemtime
http://php.net/manual/en/function.filemtime.php
« Last Edit: December 04, 2017, 03:03:55 am by lainz »

J-G

  • Hero Member
  • *****
  • Posts: 966
Re: Reading a text file from a web-site.
« Reply #17 on: December 04, 2017, 03:18:08 am »
so don't make it a txt file make it a static html file and read its contents instead.

That may well be the answer I'm looking for :)   I can easily create an html file - I'll investigate how to read that tomorrow  -  I am assuming that text in an html file can be read into a variable within a program of course. Thanks taazz.

@lainz - I thought that might be the obstacle I was trying to overcome  -  and why it was proving impossible !
FPC 3.0.0 - Lazarus 1.6 &
FPC 3.2.2  - Lazarus 2.2.0 
Win 7 Ult 64

taazz

  • Hero Member
  • *****
  • Posts: 5368
Re: Reading a text file from a web-site.
« Reply #18 on: December 04, 2017, 03:51:12 am »
That may well be the answer I'm looking for :)   I can easily create an html file - I'll investigate how to read that tomorrow  -  I am assuming that text in an html file can be read into a variable within a program of course. Thanks taazz.
Yes it can, you might need to use a parser to get to it or a simple regular expression or something along those lines but it is possible. After you finish evaluating that solution answer your self this simple question, what is the difference between html and txt?

Good judgement is the result of experience … Experience is the result of bad judgement.

OS : Windows 7 64 bit
Laz: Lazarus 1.4.4 FPC 2.6.4 i386-win32-win32/win64

J-G

  • Hero Member
  • *****
  • Posts: 966
Re: Reading a text file from a web-site.
« Reply #19 on: December 04, 2017, 11:25:03 am »
After you finish evaluating that solution answer your self this simple question, what is the difference between html and txt?
That question has been foremost in my mind all night   %)

I now need to get a better an understanding of 'Regular Expressions' and 'Parser' :)
FPC 3.0.0 - Lazarus 1.6 &
FPC 3.2.2  - Lazarus 2.2.0 
Win 7 Ult 64

Thaddy

  • Hero Member
  • *****
  • Posts: 17413
  • Ceterum censeo Trumpum esse delendum (Tnx Charlie)
Re: Reading a text file from a web-site.
« Reply #20 on: December 04, 2017, 12:43:21 pm »
Well, you CAN read a text file directly as if it is a website page if you own the server:
Try http://ip.thaddy.com ..... That's a textfile....Shows your external IP to use directly. No html.... More than 10 years old...

Maybe you mean something like that. In that case no parsing is needed. It is simply a string that you can use directly.
« Last Edit: December 04, 2017, 12:55:04 pm by Thaddy »
Due to censorship, I changed this to "Nelly the Elephant". Keeps the message clear.

lainz

  • Hero Member
  • *****
  • Posts: 4725
  • Web, Desktop & Android developer
    • https://lainz.github.io/
Re: Reading a text file from a web-site.
« Reply #21 on: December 04, 2017, 04:14:54 pm »
Well, you CAN read a text file directly as if it is a website page if you own the server:
Try http://ip.thaddy.com ..... That's a textfile....Shows your external IP to use directly. No html.... More than 10 years old...

Maybe you mean something like that. In that case no parsing is needed. It is simply a string that you can use directly.

Yes, is that simple.

so don't make it a txt file make it a static html file and read its contents instead.

That may well be the answer I'm looking for :)   I can easily create an html file - I'll investigate how to read that tomorrow  -  I am assuming that text in an html file can be read into a variable within a program of course. Thanks taazz.

@lainz - I thought that might be the obstacle I was trying to overcome  -  and why it was proving impossible !

Yes, BTW you learned a lot this time also! And a lot of ways of doing web stuff.

I prefer to embedd an html viewer in the case I need to develop some kind of app like that. That makes more easy for me to handle everything (already used it for several desktop and android apps).

But also I see a good option to make it your own way.
« Last Edit: December 04, 2017, 04:23:14 pm by lainz »

molly

  • Hero Member
  • *****
  • Posts: 2330
Re: Reading a text file from a web-site.
« Reply #22 on: December 04, 2017, 10:12:05 pm »
Quote
Reading a text file from a web-site...
.. can it be done?

Sure, no problem using http protocol.

Quote
I have successfully written code to read the time-stamp from a local file (a pre-cursor to my second approach to the problem) but can't work out how to do the same for a file on the web-site. I've looked through all the components and attributes of a ThtmlDocument but can't see anything relating to the date.
Also no problem using the http protocol.

Do note however that there are some caveats towards the latter:
- the http server needs to support supplying a modification date
- for dynamic content there must be special code running on the server that supplies modification date, it is more or less automatic for static content (when enabled on server)
- even though you are able to retrieve a modification date, it does not necessary means "modification date". w3.org explains it here

The following simplified code
Code: Pascal  [Select][+][-]
  1. program test;
  2.  
  3. {$MODE OBJFPC}{$H+}
  4.  
  5. uses
  6.   Classes, SysUtils, StrUtils, fphttpclient;
  7.  
  8. function GetFileContent(URL: String; Response: TStream): boolean;
  9. begin
  10.   Result := False;
  11.   With TFPHttpClient.Create(Nil) do
  12.   try
  13.     Get(URL, Response);
  14.     Result := True;
  15.    finally
  16.     Free;
  17.   end;
  18. end;
  19.  
  20. // W3 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.29) writes:
  21. // The Last-Modified entity-header field indicates the date and time at which
  22. // the origin server believes the variant was last modified.
  23. //
  24. // The exact meaning of this header field depends on the implementation of the
  25. // origin server and the nature of the original resource. For files, it may be
  26. // just the file system last-modified time. For entities with dynamically
  27. // included parts, it may be the most recent of the set of last-modify times
  28. // for its component parts. For database gateways, it may be the last-update
  29. // time stamp of the record. For virtual objects, it may be the last time the
  30. // internal state changed.
  31. function GetModificationDate(URL: String; var Date: String): boolean;
  32. var
  33.   HTTPHeaderResponse: TStringList;
  34.   Line : string;
  35. begin
  36.   Result := False;
  37.   Date := 'not available';
  38.  
  39.   HTTPHeaderResponse := TStringList.Create;
  40.   HTTPHeaderResponse.NameValueSeparator := ':';
  41.  
  42.   With TFPHttpClient.Create(Nil) do
  43.   try
  44.     // A Head request does not download the file/URL but only request information
  45.     Head(URL, HTTPHeaderResponse);
  46.  
  47.     for line in HTTPHeaderResponse do
  48.     begin
  49.       if AnsiStartsStr('Last-Modified:', Line) then
  50.       begin
  51.         Date := ReplaceStr(Line, 'Last-Modified:', '');
  52.         Result := True;
  53.         Break;
  54.       end;
  55.     end;
  56.    finally
  57.     Free;
  58.     HTTPHeaderResponse.Free;
  59.   end;
  60. end;
  61.  
  62.  
  63.  
  64. procedure HandleURL(URL: String);
  65. var
  66.   Date, Line: String;
  67.   ResponseData: TMemoryStream;
  68.   ResponseAsStrings : TStringList;
  69. begin
  70.   // create stream to hold 'downloaded' data
  71.   ResponseData := TMemoryStream.Create;
  72.  
  73.   try
  74.     WriteLn('-------------' + StringOfChar('-', Length(URL)));
  75.     WriteLn('Handling URL ' , URL);  
  76.     WriteLn('-------------' + StringOfChar('-', Length(URL)));
  77.     Date := '';
  78.     ResponseData.Position := 0; // Clear; // Size := 0;
  79.  
  80.     if GetModificationDate(URL, Date) then
  81.     begin
  82.       WriteLn('Last modification date according to server is: ', Date);
  83.  
  84.       if GetFileContent(URL, ResponseData) then
  85.       begin
  86.         WriteLn('Content of file received');
  87.  
  88.         if AnsiEndsStr('.htm', URL) or AnsiEndsStr('.html', URL) then
  89.         begin
  90.           Writeln('Showing contents:');
  91.  
  92.           // 'Convert' MemoryStream to StringList
  93.           ResponseAsStrings  := TStringList.Create;
  94.           // Make sure that data can be read from memorystream
  95.           ResponseData.Position := 0;
  96.           // Load the stringlist from the memorystream
  97.           ResponseAsStrings.LoadFromStream(ResponseData);
  98.           // Display content of the stringlist
  99.           for Line in ResponseAsStrings do WriteLn(Line);
  100.           // Clean up
  101.           ResponseAsStrings.Free;
  102.         end
  103.         else
  104.         begin
  105.           WriteLn('Saving contents to file ', ExtractFilename(URL));
  106.  
  107.           // Save contents of memorystream to a file
  108.           ResponseData.SaveToFile(ExtractFilename(URL));
  109.         end;
  110.       end
  111.       else WriteLn('Unable to retrieve content for ', URL);
  112.     end
  113.     else WriteLn('Unable to retrieve modification date for ', URL);
  114.     WriteLn('---- done ----');
  115.   finally
  116.     // Clean up
  117.     ResponseData.Free;
  118.   end;
  119. end;
  120.  
  121.  
  122. begin
  123.   HandleURL('http://forum.lazarus.freepascal.org/Themes/default/images/star.gif');
  124.   HandleURL('http://forum.lazarus.freepascal.org/index.php/topic,39123.0.html');
  125. end.
  126.  

outputs for me:

Code: [Select]
-------------------------------------------------------------------------------
Handling URL http://forum.lazarus.freepascal.org/Themes/default/images/star.gif
-------------------------------------------------------------------------------
Last modification date according to server is:  Fri, 11 Sep 2009 21:35:13 GMT
Content of file received
Saving contents to file star.gif
---- done ----
-----------------------------------------------------------------------------
Handling URL http://forum.lazarus.freepascal.org/index.php/topic,39123.0.html
-----------------------------------------------------------------------------
Last modification date according to server is:  Mon, 04 Dec 2017 21:04:32 GMT
Content of file received
Showing contents:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" type="text/css" href="/Themes/default/css/index.css?fin20" />
<script type="text/javascript" src="/Themes/default/scripts/script.js?fin20"></script>
<script type="text/javascript" src="/Themes/default/scripts/theme.js?fin20"></script>
<script type="text/javascript"><!-- // --><![CDATA[
var smf_theme_url = "/Themes/default";
var smf_default_theme_url = "/Themes/default";
var smf_images_url = "/Themes/default/images";
var smf_scripturl = "http://forum.lazarus.freepascal.org/index.php?PHPSESSID=pq6uq1g90v5stc8fa651kh1914&amp;";
var smf_iso_case_folding = false;
var smf_charset = "UTF-8";
var ajax_notification_text = "Loading...";
var ajax_notification_cancel_text = "Cancel";
// ]]></script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="description" content="Reading a text file from a web-site." />
<title>Reading a text file from a web-site.</title>
<link rel="canonical" href="http://forum.lazarus.freepascal.org/index.php?topic=39123.0" />

<-- rest of content stripped because of overflowing this post -->

 <a href="http://www.simplemachines.org/about/smf/license.php" title="License" target="_blank" class="new_win">SMF &copy; 2017</a>, <a href="http://www.simplemachines.org" title="Simple Machines" target="_blank" class="new_win">Simple Machines</a><br /><a target="_blank" href="http://www.tinyportal.net" title="TinyPortal">TinyPortal</a> <a href="http://forum.lazarus.freepascal.org/index.php?PHPSESSID=pq6uq1g90v5stc8fa651kh1914&amp;action=tpmod;sa=credits">&copy; 2005-2011</a>
</span></li>
<li><a id="button_xhtml" href="http://validator.w3.org/check?uri=referer" target="_blank" class="new_win" title="Valid XHTML 1.0!"><span>XHTML</span></a></li>
<li><a id="button_rss" href="http://forum.lazarus.freepascal.org/index.php?PHPSESSID=pq6uq1g90v5stc8fa651kh1914&amp;action=.xml;type=rss" class="new_win"><span>RSS</span></a></li>
<li class="last"><a id="button_wap2" href="http://forum.lazarus.freepascal.org/index.php?PHPSESSID=pq6uq1g90v5stc8fa651kh1914&amp;wap2" class="new_win"><span>WAP2</span></a></li>
</ul>
</div></div>
</div>
</body></html>
---- done ----

That is the modification date, and the content. In case the content (really bad check on extension) is binary data it is saved to disk, and in case it is a html file the contents is displayed using a stringlist.
« Last Edit: December 04, 2017, 10:14:47 pm by molly »

J-G

  • Hero Member
  • *****
  • Posts: 966
Re: Reading a text file from a web-site.
« Reply #23 on: December 05, 2017, 01:04:43 am »
@ Molly,
Again - you're a star!  O:-)  thanks.

I've started to analyse your 'simplyfied' code and have successfully read the contents of an html file on the Firebirds web-site.

It looks as if reading the date will be irrelevant as I can create a file with the 'current' URLs just listed and since the version on the web-site will always be the one to use, just reading them using the "for Line in ResponseAsStrings do WriteLn(Line); " - - - not using writeln, but putting the result into a string and then evaluating that to eliminate/skip-over header information, selecting only those few lines of text I need will do the job admirably.  I don't need a 'local' copy either so the whole exercise will be much more efficient.

The issue you raised about 'bad check on extension' is irrelevant since I will create the file with a specific name and always use that as the 'HandleURL' argument.

I did have a problem compiling the code until I realized that I needed to put it in a simple 'program' rather than an 'application'  :-[  but once that was sorted, I could step through [F8] to determine what was being read from the site.

My next task will be to write the html file with the URLs listed and use your code to read it back before modifying it for use within the main program but I'll save that until I have a clear head in the morning.
FPC 3.0.0 - Lazarus 1.6 &
FPC 3.2.2  - Lazarus 2.2.0 
Win 7 Ult 64

molly

  • Hero Member
  • *****
  • Posts: 2330
Re: Reading a text file from a web-site.
« Reply #24 on: December 05, 2017, 02:43:42 am »
Again - you're a star!  O:-)  thanks.
Glad i could be of service. Of course you're more a star than i'll ever be able to. Hope you enjoyed your concerts  8-)

Quote
I did have a problem compiling the code until I realized that I needed to put it in a simple 'program' rather than an 'application'  :-[  but once that was sorted, I could step through [F8] to determine what was being read from the site.
Sorry, i should have mentioned that i've a habit of writing fpc only programs whenever possible. copy-pasting the subroutines into a lazarus application should be easy enough though.

Quote
My next task will be to write the html file with the URLs listed and use your code to read it back before modifying it for use within the main program but I'll save that until I have a clear head in the morning.
Note that you can use the 'html' processing to simply download a pure text file that is available on your http server. As long as you are sure the 'downloaded' content data that gets stored inside the stream is text based you can process it as such. You could even retrieve the contents of a online textfile directly if you would want to. The TFPHttpClient.Get(0 method has a couple of different overloads. Unfortunately it seems that online documentation is missing, so you would need to have a look at the source-code of fcl-web.

Code: [Select]
var
  S: string
begin
  With TFPHttpClient.Create(Nil) do
  try
    S := Get(URL);
    WriteLn('Contents of file reads: ', S); // works as long as the response consist of text. Writes garbled output on binary data.
   finally
    Free;
  end;
end;
You could then copy/add the text string to a stringlist for easier processing.

edit: and i should have looked one line above the one i was looking at  ;D. You can also directly 'download' into TStrings.
Code: [Select]
var
  S: TStringList;
begin
  With TFPHttpClient.Create(Nil) do
  try
   S := TStringList.Create;
   Get(URL, S);
    WriteLn('Contents of file reads: ', S.Text); // works as long as the response consist of text. Writes garbled output on binary data.
   finally
    Free;
    S.Free;
  end;
end;
« Last Edit: December 05, 2017, 02:49:21 am by molly »

lainz

  • Hero Member
  • *****
  • Posts: 4725
  • Web, Desktop & Android developer
    • https://lainz.github.io/
Re: Reading a text file from a web-site.
« Reply #25 on: December 05, 2017, 02:53:55 am »
Adding to the great response from molly, you can use SimpleGet

Code: Pascal  [Select][+][-]
  1. var
  2.   s: TStringList;
  3. begin
  4.   s := TStringList.Create;
  5.   TFPHttpClient.SimpleGet('http://forum.lazarus.freepascal.org//', s);
  6.   ShowMessage(s[0]); // <!DOCTYPE html...
  7.   s.Free;

J-G

  • Hero Member
  • *****
  • Posts: 966
Re: Reading a text file from a web-site.
« Reply #26 on: December 05, 2017, 02:32:09 pm »
@ Molly
 :D Concerts!!  one Dire, one Good, one EXCELLENT  - 
The Dire one was 'Christmas Music' at a primary school 'Fayre' where the 'audience' were talking - some on their phones! - and children running around  throughout our 30 minute spot  >:D

The Excellent one was Bach 'Wachet Auf', Vivaldi 'Gloria', Handle - part of 'Messiah', 'Es ist ein Ros entsprungen' (beautiful!) plus some 'West Gallery' Carols with a near sell out audience.

The Good one - Beethoven Mass in C plus Shostakovich 5th Symphony.

Your excellently documented code has allowed me to solve all the issues raised by my need to read the web-based file contents into my program thus making the location of the primary data totally dynamic.

This is the final procedure:
Code: Pascal  [Select][+][-]
  1. procedure ReadURLs;
  2. Var
  3.   NewURLs    : TStringStream;
  4.   ListOfURLs : TStringList;
  5.   Line       : string;
  6.   i : byte;
  7. begin
  8.  
  9.   With TFPHttpClient.Create(Nil) do
  10.     try
  11.       AllowRedirect := True;
  12.       NewURLs       := TStringStream.Create('');
  13.       Get(LOC_URL,NewURLs);
  14.       ListOfURLs    := TStringList.Create;
  15.       NewURLs.Position := 0;
  16.       ListOfURLs.LoadFromStream(NewURLs);
  17.  
  18.       i := 1;
  19.       for line in ListOfURLs do
  20.         begin
  21.           URL_List[i] := line;
  22.           inc(i);
  23.         end;
  24.       ListOfURLs.Free;
  25.     finally
  26.       Free;
  27.       NewURLs.Free;
  28.     end;
  29.  
  30.   PDF_URL := BaseURL+URL_List[1];
  31.   SOP_URL := BaseURL+URL_List[2];
  32.   ALT_URL := BaseURL+URL_List[3];
  33.   TEN_URL := BaseURL+URL_List[4];
  34.   BAS_URL := BaseURL+URL_List[5];
  35.   CAP_URL := BaseURL+URL_List[6];
  36.  
  37. end;
  38.  

From previous experience (after getting a 301 error) I soon realized that the 'AllowRedirect := True;' was needed and the need for 'Position := 0;' & 'LoadFromStream' came from your code comments.

The file being read from the web is a simple text file with 6 lines which I can modify as and when required so that I can have rehearsal music for two (or more) concerts available for choir members to access from their own PC without me having to distribute a new version of the program - nor do they have to download a new 'location' file.

Although I knew TStringStream and TStringList existed - they didn't in TP - I didn't understand how or when to use them.   A great 'lesson'!

@lainz
I'm sure the 'SimpleGet' would also do the job but by the time I saw your post I was already into coding and testing using Molly's suggestion - thanks.
FPC 3.0.0 - Lazarus 1.6 &
FPC 3.2.2  - Lazarus 2.2.0 
Win 7 Ult 64

molly

  • Hero Member
  • *****
  • Posts: 2330
Re: Reading a text file from a web-site.
« Reply #27 on: December 06, 2017, 11:38:58 pm »
@ Molly
 :D Concerts!!  one Dire, one Good, one EXCELLENT  - 
That is quite a mixed bunch  :D

Quote
The Dire one was 'Christmas Music' at a primary school 'Fayre' where the 'audience' were talking - some on their phones! - and children running around  throughout our 30 minute spot  >:D
At least you got an audience of such a young age.... where can you see that these days with all the Minecrafting and Pokemon catching (probably reason for the run-arounds)  :P

Cantatas, hymnes, mass', carols ... and not the most easy ones either (guessing there that it was not the first time your choir performed those). Getting into the Christmas spirit early it seems  :)

Nice to hear you had some fun !

Thanks for reporting back with your code.

Quote
Although I knew TStringStream and TStringList existed - they didn't in TP - I didn't understand how or when to use them.   A great 'lesson'!
I had some delay along the way so i was able to put some stuff together for your enjoyment and attached it. With a bit of luck you'll be able to get some (additional) idea's and/or perhaps a better understanding.

fwiw: SimpleGet would be suffice for most (simple) tasks. It would be advisable to some day have a look in case you got time to spare as simpleget method is a static method (e.g. no need to instantiate the class first). Something that wasn't available in TP7 either, but there you had objects which have a somewhat similar resemblance.

J-G

  • Hero Member
  • *****
  • Posts: 966
Re: Reading a text file from a web-site.
« Reply #28 on: December 07, 2017, 01:51:43 am »
At least you got an audience of such a young age..
Not really - there were only a handful of children actually listening. One of which turned out to be the grand-daughter of an ex girlfriend!!
Quote from: molly
Cantatas, hymnes, mass', carols ... and not the most easy ones either (guessing there that it was not the first time your choir performed those).
The Vivaldi & Handle are 'standard' repertoire of course and most members had done those a number of times with other ensembles but this choir hadn't done them previously. I, for one, hadn't even heard of the Bach, nor 'Es ist ein Ros entsprungen'. The West Gallery Carols are all 'different' tunes/harmonies from the ones usually used so needed some work :)

Quote from: molly
Thanks for reporting back with your code.
Reporting back ought to be what the forum is about.

Quote from: molly
I had some delay along the way so I was able to put some stuff together for your enjoyment and attached it. With a bit of luck you'll be able to get some (additional) idea's and/or perhaps a better understanding.

Very useful indeed - thanks.  I'm sure that (when I've studied the code more fully) I will be able to use the routines to advantage.

One of the issues I've been contemplating since looking at your first program is the possibility of downloading files directly to the local PC. Currently I have [Show] and [Play] buttons which the user clicks on and that fetches the file and (in the case of .MP3 files] just plays it using the default player. .PDFs are just displayed using Acrobat or whatever the user has installed, and .CAP files are loaded into Capella Reader.

If the user wants to actually save the file locally (for use when not connected to the internet) then I just link them to the web-page listing and they have to select each file individually. It looks as if I can write a routine - using 'Download2File' - which will make it much easier to simply download the files directly. It might also be possible to 'update' the program itself by checking for a date change or version number - - - - but I'm getting way ahead of myself now :)

Since making the URLs dynamic, I've been able to modify the program to handle the music for multiple concerts. There are currently three 'sets' on the web-site - One for the Christmas Concert next Sunday, one for the 'Disney' Concert in March and one for the 'Film Scores' for next July.

FPC 3.0.0 - Lazarus 1.6 &
FPC 3.2.2  - Lazarus 2.2.0 
Win 7 Ult 64

lainz

  • Hero Member
  • *****
  • Posts: 4725
  • Web, Desktop & Android developer
    • https://lainz.github.io/
Re: Reading a text file from a web-site.
« Reply #29 on: December 07, 2017, 03:07:37 am »
Quote
It might also be possible to 'update' the program itself by checking for a date change or version number - - - - but I'm getting way ahead of myself now :)
Yes an auto update feature is really nice to have!

You can check in the wiki there's an auto update software already working for Lazarus applications.
http://wiki.lazarus.freepascal.org/LazAutoUpdater

Or you can make your own to learn a lot more =)

I'm intrigued on how your application behaves, you can share us at least a screenshot?!

If is private there's no problem at all  :-[

 

TinyPortal © 2005-2018