Jump to content


  • Content Count

  • Joined

  • Last visited

Everything posted by chkaufmann

  1. I handle all requests in OnCommandGet. Sometimes these get blocked but I couldn't locate yet where and why. As a first solution I would like to cancel the command after a certain time. I found the TerminateWaitTime property, but since the value is never used in code I think this doesn't work. Is there another solution for this? Something like max_execution_time in PHP? Christian
  2. chkaufmann

    TIdHTTPServer.OnCommandGet - Timeout

    I use "FHttpServer.Contexts.Count" for status information and it happens, that the counter doesn't go to zero. So I don't know, if it's during read/write or in my code. So the first thing I have to do is to count in the OnCommandGet handler as well, so I know if it's in my code or not. max_execution_time: If I would like to do something like that I would had to handle the request in another again probably? Something like a background worker from the Omnithread library? Then I can set a wait event and cancel execution after a certain amount of time.
  3. I need a function like stripcslashes() in PHP. Is there something similar in Delphi or do I have to write it on my own. Christian
  4. For a HTTP Post request I create a TIdMultiPartFormDataStream and then I use AddFormField() to put my values. Now I noticed, that "=" is replaced by "=3D" and Content-Transfer-Encoding is set to "quoted-printable". Using the $_POST[] variable in my PHP script, the 3D remains and I get wrong results. Now I'm not sure where I should change that? Should the request be without Content-Transfer-Encoding? or with a different one? Or should I change my PHP script and expect a "quoted-printable" string? I didn't find any information for PHP if I can get the Content-Transfer-Encoding from somewhere. I always thought PHP does handle such things automatically. Christian
  5. chkaufmann

    Indy - TIdMultiPartFormDataStream

    Thanks Remy. I set the type to '8bit' and all works fine now, even when post variables contain cyrillic characters.
  6. chkaufmann

    function stripcslashes()

    Yes, that's what I need. Convert \n and \t to chr(10) and chr(9). Treating the string as array is this fine? Or is there a faster way to do it? Something like this n := ASource.Length; SetLength(Result, n); ix1 := 1; ix2 := 1; while ix1 <= n do begin if ASource[ix1] = '\' then begin Inc(ix1); case ASource[ix1] of 't': Result[ix2] := chr(9); 'n': Result[ix2] := chr(10); '\': Result[ix2] := '\'; end; end else Result[ix2] := ASource[ix1]; Inc(ix1); Inc(ix2); end; if ix1 <> ix2 then SetLength(Result, ix2 - 1); Christian
  7. Hi, we already missed 10.3, now 10.3.1 is available but we can still not move to the new version because IDE compiler errors are still not fixed. Our major project is quite large but what we found is, that this issue is probably the problem we have: https://quality.embarcadero.com/browse/RSP-22307 What is the best way to get this fixed now? It's unresolved since 4 months now and having such a "show stopper" all the new fancy features in the IDE are just useless when such basics like the compiler don't work. Christian
  8. chkaufmann

    SQLite - FireDAC or ?

    Yes Devart db components are reliable and stable. I use UniDac since years and it works with no problems with Firebird, MS SQL, Postgresql and Oracle. Christian
  9. chkaufmann

    Cannot install USB Driver

    Hi, I try to create an Android app. My device is not listed under "Target" so I found this page: http://docwiki.embarcadero.com/RADStudio/Rio/en/Installing_the_USB_Driver_for_Your_Android_Device I have the driver downloaded. However if I try to update it in the Device Manager it's not recognized and if I load the android_winusb.inf file explicitly I get an error (no compatible driver found). I'm using a Lenovo laptop with Win7 installed. My device is a Samsung A3 and in the Windows file explorer it's listed correctly. But in driver details I can see that it is still using a Microsoft Driver 6.1.7601.18738. How can I solve this problem? Christian
  10. chkaufmann

    Cannot install USB Driver

    I found this one: https://www.makeuseof.com/tag/android-wont-connect-windows-adb-fix-it-three-steps/ Now it works. But the next problem is the debugger, which doesn't work because my Samsung A3 (two years old) has only Android 8.0 on it :-(. Other than that I have a "Hello World" now, but without debugger it's a bit difficult, e.g. to find out how gestures really work. Christian
  11. I have a controller for "remote files". If the file is not yet on the local disk, I download it in the background (using a IOmniBackgroundWorker) and then call an event when the file is available. procedure TMyController.GetFile(const AFilename: String; AOnFileAvailable: TNotifyEvent); begin ... end; AOnFileAvailable is a method of a form which loads the file to display it. Now it may happen that the form will be closed before the download is finished and in this case a call to AOnFileAvailable will cause an access violation. My question: What is the common pattern to solve this issue? I was thinking about passing an object/interface instead of the event so the form can set it to invalid before it's destroyed. But maybe this is solved using existing code from the OmniThread Library? Christian
  12. chkaufmann

    How to avoid calls to invalid events?

    That was my idea as well. I did some more research in the internet and Maybe I will use an IOmniFuture<T>. But I have to test this first. Not sure if the OnTerminated event is called everytime and if the CancellationToken is already signaled if all references to it are released. Otherwise it will be easier to create my own call back object/interface.
  13. chkaufmann

    How to avoid calls to invalid events?

    Yes, but the procedure will access for example a TOleContainer to display Word and Excel files. And once the form is gone, the Container is gone as well.
  14. chkaufmann

    Tree view?

    Maybe I'm getting old but I still prefer nntp, pure text. It's much easier to follow interesting threads and ignore others. No web interface beats something like XanaNews. Christian
  15. chkaufmann

    Rio 10.3.1 IDE Compiler Error

    Well, for me this kind of solutions are fine in the world of "Open Source Tools", but not when I'm forced to pay a subscription fee. In our case the compiler not even shows us the exact location. I just get the error "[dcc32 Fatal Error] F2084 Internal Error: DBG1226" during compilation, well in fact during linking. And the only QC report with this error I found is the one listed above. So in the end I don't know where to search the error in a project with several hundred thousand lines of code. I use generic functions in different places, but having these removed is a "showstopper" for me. Christian
  16. My input is a string and I would like to know if: - the string contains cyrillic characters - the string contains greek characters - the string contains thai characters Or more general: If the string contains characters, that are not "near the latin characters". So for äèü it should be false, but for Афонина it should be true. Christian
  17. chkaufmann

    Request to Google Translate API

    Hi, if I enter the following url in my browser, I get a result file with the name "Müller" translated to russian characters: https://translate.googleapis.com/translate_a/single?client=gtx&amp;sl=de&amp;tl=ru&amp;dt=t&amp;q=Müller I tried to implement that with TIdHTTP, but something is missing and I don't find the problem. Here is my code: var data : String; http : TIdHTTP; sslIO : TIdSSLIOHandlerSocketOpenSSL; tmp : TStringStream; url : String; begin http := TIdHTTP.Create(nil); http.HTTPOptions := http.HTTPOptions + [hoNoProtocolErrorException, hoWantProtocolErrorContent]; sslIO := TIdSSLIOHandlerSocketOpenSSL.Create(nil); sslIO.SSLOptions.SSLVersions := [sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2]; sslIO.SSLOptions.Mode := sslmUnassigned; sslIO.SSLOptions.VerifyMode := []; sslIO.SSLOptions.VerifyDepth := 0; http.IOHandler := sslIO; url := TIdUri.UrlEncode('https://translate.googleapis.com/translate_a/single?client=gtx&sl=de&tl=ru&dt=t&q=Müller'); tmp := TStringStream.Create; http.Get(url, tmp); data := tmp.DataString; tmp.Free; http.Free; end; I expect to get the following string (like in the browser): [[["мельник","Müller",null,null,0]],null,"de"] Can somebody tell me what is wrong in my code? Christian
  18. chkaufmann

    Request to Google Translate API

    I had to set the Accept-Language header, now it works, at least with Russian names. I wasn't aware of the TIdLog components. Good to know because my simple test did not work with Thai and Hebrew names, but I have to investigate there further first because when I paste these characters to the source code file, they look different even though my source file is UTF-8. Christian
  19. chkaufmann

    Request to Google Translate API

    Thanks for the corrections. However, it still doesn't work and I don't get the translated name in the answer. There must be something else that is done different by the browser. Christian