Jump to content

Angus Robertson

Members
  • Content Count

    1811
  • Joined

  • Last visited

  • Days Won

    33

Everything posted by Angus Robertson

  1. Angus Robertson

    Reverse scrolling TEdt?

    Looking for a visual component similar to TEdit (but read only) that adds new lines at the top of the window, and pushes them down, reverse scrolling. Ideally forward or reverse scrolling should be an option. Angus
  2. Angus Robertson

    Reverse scrolling TEdt?

    Yes, best to test the quickest solution first and only do something harder if it's too slow. Reverse scrolling is only wanted by people with slow data updates like alarms who actually watch the screen, no-one watches syslogs rushing past at 10 lines per second, except to see something is arriving. \ Angus
  3. Angus Robertson

    Reverse scrolling TEdt?

    The GUI looks like this and it's the left window that show data. Angus.
  4. Angus Robertson

    Reverse scrolling TEdt?

    The purpose is to display the content of one of up to 999 text files selected from a tab control, no columns or sortable data, just random lines of text up to 2K long. So each time the tab is clicked to change a source file, the TMemo is reloaded with lines. I don't need the complexity of VTV, no headers, footers, columns, nodes, etc. TListView will handle virtual data quite adequately, if I can remove the header. But I really would prefer a TMemo that reverses the TStringList loaded into it, top latest. Angus
  5. Angus Robertson

    Reverse scrolling TEdt?

    The problem with ListView or VirtualTreeView is I'd have to write a code to parse text file lines into an array of lines as the data source. Mind I guess that is what TMemo is doing when I load a TStringList into it, worth a little test code. Angus
  6. Angus Robertson

    Reverse scrolling TEdt?

    Of course I meant TMemo in the subject... A virtual TListView is very useful for rapid sorting for columnar data, but I'm displaying random textual information, might be raw data from 50 GPS locators, router syslogs, or alarms from remote monitoring of transmitters or properties, and it's the latter low traffic where people ask for latest at top of window rather than bottom. Angus
  7. Angus Robertson

    Reverse scrolling TEdt?

    Yes, inserting a line at the top works, but is it efficient to push 100,000 lines lower? Particularly when adding 100 lines. There must be a better way. Angus
  8. So the camera does the hard work and gives you a plate number? RcvdStream is optional, set it to Nil and it is not written, and you just store what appears in the OnDocData event. Angus
  9. You empty a stream with the clear method, that resets the position to the start as well. Seek to start is when you have read or written to the stream. Beware cameras can produce a lot of data and you have to keep up with it or frames are lost. This may be one rare example where it's better to capture data in a thread particularly if you need to display it real time which can also be a struggle, or at least was 15 years ago on the hardware I was using, guess everything is a lot faster now. One streaming technique is an endless HTML page, it says page length zero in the header, then sends one MIME block per frame, up to 25 per second. You don't want to save that to a stream...or at least clear it after each frame. You may be better using the OnDocData event to receive small amounts of data rather than a stream, but also be careful about copying it between buffers, that slows everything down as well. Angus
  10. Angus Robertson

    Mustangpeak UltraExplorer

    Does anyone else still use UltraExplorer, an excellent replacement for Windows File Explorer, written in Delphi by Mustangpeak using VirtualShellTools and numerous other Delphi components? It was last updated about 10 years ago and the source was on Google SVN, now closed down. On one of my Windows 10 installs, UltraExplorer stopped working after a Windows Update, so I'd like to try and rebuild it. Some of the Mistangpeak components are being maintained as Github projects, but can not find UltraExplorer. I still have the SVN source from 2010. Angus
  11. Angus Robertson

    Mustangpeak UltraExplorer

    SVN is now updated with the missing library source files, so long since I setup a new repository forgotten how authentication was set-up. Angus
  12. Angus Robertson

    Mustangpeak UltraExplorer

    I built UltraExplorer with Delphi 2007, had to tweak the DPR, Mustangpeak used Delphi 7. Angus
  13. Angus Robertson

    Mustangpeak UltraExplorer

    I had to delete a lot of .svn files to add the libraries to a new SVN repository, which is probably how the source directory got lost as well, Not sure about the zlib obj files, the unit compiled OK so Delphi must have found them in my path somewhere from other libraries like ICS, although ICS uses a later version. Deleting DCUs from dozens of directories might have saved some space, but this application will not compile with later versions of Delphi, not with older versions without some editing, so no real harm. Tried to update SVN with the missing source files but it's moaning at me, will try again later. Angus
  14. Angus Robertson

    Mustangpeak UltraExplorer

    The Delphi source code for UltraExplorer is now available in SVN at http://svn.magsys.co.uk:8443/svn/mustangpeak/ username = ics and password = ics for read access. The installable version may be downloaded from https://www.magsys.co.uk/delphi/ultraexplorer.asp Angus
  15. Angus Robertson

    TSslHttpCli

    You only get that error if you are misusing the component. It means an async operation is still in progress and you are attempting to start another operation. With async use, you need to wait for the onRequestDone event to fire before starting something new. You can also check the State property for httpReady. Angus
  16. Years ago I had TWSocketServers running and accepting thousands of short connections a day for a few months at a tine, had to workaround the 49 day GetTickCount wrap around. Now my servers never run for more than 35 days, due to Microsoft being more aggressive with Windows Update and forcing reboots. Angus
  17. Angus Robertson

    Using ThttpAppSrv for REST Middleware

    Look at the new OverbyteIcsSslMultiWebServ sample project, which uses TSslHttpAppSrv, From the main unit: SSL web application server sample, no real GUI, really designed to be a Windows service application. It supports multiple SSL hosts with multiple listeners, each with it's own logging file, can order it's own SSL certificates, includes hacking protection, and will email status information and errors to an administrator. If turned into a Windows service, this sample is really a commercial web server. ICS units includes functions to read all parameters from INI files, and one is included OverbyteIcsSslMultiWebServ.ini. Much of the code for this sample comes from my own public web application server that uses SQL server, and has been running for 10 years always using the latest ICS versions, the link is to the monitoring page that shows what it's doing. Angus
  18. As François says, you should be using TWSocketServer which handles aspects of accepting and closing connections, you just plug in your existing onDataAvailable code. Also makes it easier to move to SSL in the future. If you are using the HTTP protocol, there is a new component TSimpleWebSrv in OverbyteIcsSslHttpRest,pas which uses TWSocketServer and adds a simple HTTP protocol, just a few lines of code, ICS uses it for lightweight HTTP servers for OAuth2 and Lets Encrypt. Angus
  19. Angus Robertson

    TSSLWSocket (repost)

    OpenSSL connection errors simply mean some aspect of protocol negotiation has failed, they almost never tell you why or how to fix it. I would make sure you set-up the SslContext similarly to InitSsl in OverbyteIcsSslHttpRest;.pas which is current best practice. Note SslCliSecurity in particular, which does all the hard for you in setting protocols, security and ciphers. Angus
  20. Angus Robertson

    Broken proxy support with ICS 8.61

    Don't know, you'll have to check the code. The wiki has no documentation on proxy use. My applications do not allow a use to do that. Angus
  21. Angus Robertson

    Broken proxy support with ICS 8.61

    Ideally the component would complain if you specified authentication without credentials, but no idea if that happens. Given the 20 year age of this stuff and the number of applications written around undocumented behaviour, we try and leave things alone as much as possible, and often get caught when making what are initially thought as simple changes. Having looked briefly at the code, I think NTLM got selected due to the 407 response, but you were wasting a request round trip by not specifying authentication to start with so you got that response. Angus
  22. Angus Robertson

    Broken proxy support with ICS 8.61

    The main issue here is that if you don't specify a proxy authentication type but do specify credentials, ICS attempts to specify the type for you based on response types, 401, 407, etc, but this is not well documented and may change by accident when other changes are made. So really it's pot luck, safer to specify the authentication type you require so it's sent with the initial request, rather than after a 40x response. Also, just because you specify authentication does not mean the proxy or server needs it, which cab confuse testing. Angus
  23. Interesting, not seen a Delphi application use raw SChannel before. The main downside is Microsoft is very slow keeping up with new standards, there is still no support for TLSv1.3 in Windows almost a year after it was approved and they took several years to add TLSv1.2 to Windows 2008 despite it still being supported and only with minimal ciphers. Angus.
  24. Angus Robertson

    TSSLWSocket (repost)

    My ICS web server has a long list of IP addresses it does not like, essentially anyone that tries to access a php, pl, sql (or various other) page on my sites, it holds the connection for one minute and then aborts it, to try and stop them making dozens of attempts a second. Of course hackers know all the tricks. Angus
  25. Angus Robertson

    TSSLWSocket (repost)

    10053 is aborted, can mean SSL negotiation failed or server does not like you. Angus
×