Jump to content

Lajos Juhász

Members
  • Content Count

    828
  • Joined

  • Last visited

  • Days Won

    11

Posts posted by Lajos Juhász


  1. In the C# everything is a parameter (https://blog.ultramsg.com/send-whatsapp-message-by-whatsapp-api-c-sharp):

     

    procedure TForm1.Button6Click(Sender: TObject);
    var
      byte1: TBytes;
      file2: string;
      base64: TBase64Encoding;
    
    begin
      if OpenDialog1.Execute then
      begin
        /// / begin encodein base64
        byte1 := System.iOUtils.TFile.ReadAllBytes(OpenDialog1.FileName);
        base64 := TBase64Encoding.Create(0); // CharsPerLine = 0 means no line breaks
        try
          file2 := base64.EncodeBytesToString(byte1);
        finally
          base64.Free;
        end;
    
        var
        Client := TRESTClient.Create('https://api.ultramsg.com/instance16802/messages/image');
        var
        request := TRESTRequest.Create(nil);
        var
        esponse := TRESTResponse.Create(nil);
    
        request.Client := Client;
        request.Response := esponse;
    
    
        Client.ContentType := 'application/x-www-form-urlencoded';
        request.Method := TRESTRequestMethod.rmpost;
    
        request.AddParameter('token', token_txt.text);
        request.AddParameter('to', send_to_txt.text);
        request.AddParameter('image', file2);
    
    //      request.AddBody(LJSONObject);
    
          request.Execute;
          Memo1.Text := request.Response.Content;
      end;
    end;

     

     


  2. Why is file2 a widestring?

     

    You should try:

    procedure TForm1.Button1Click(Sender: TObject);
    var
      byte1: TBytes;
      file2: string;
      LJSONObject: TJSONObject;
      base64: TBase64Encoding;
    
    begin
      if OpenDialog1.Execute then
      begin
        /// / begin encodein base64
        byte1 := System.iOUtils.TFile.ReadAllBytes(OpenDialog1.FileName);
        base64 := TBase64Encoding.Create(0); // CharsPerLine = 0 means no line breaks
        try
          file2 := TNetEncoding.base64.EncodeBytesToString(byte1);
        finally
          base64.Free;
        end;
    
        var
        Client := TRESTClient.Create('https://api.ultramsg.com/instance16802/messages/image');
        var
        request := TRESTRequest.Create(nil);
        var
        esponse := TRESTResponse.Create(nil);
    
        request.Client := Client;
        request.Response := esponse;
    
        Client.ContentType := 'application/x-www-form-urlencoded';
        request.Method := TRESTRequestMethod.rmPOST;
    
        LJSONObject := TJSONObject.Create();
        try
          LJSONObject.AddPair('token', 'xxxxxx');
          LJSONObject.AddPair('to', '+00000000');
          LJSONObject.AddPair('image', file2);
    
          request.AddBody(LJSONObject);
    
          request.Execute;
          Memo1.Text := request.Response.Content;
    
        finally
          LJSONObject.Free;
        end;
      end;
    end;

     

     


  3. 10 minutes ago, KMarb said:

    Delphi 11.1, creating android apps

     

    In researching other topics I found some discussion that android is a different beast in terms of memory management, and maybe we should no longer call free or freeAndNil?

    This was correct until Delphi 10.4 when ARC ( Automatic Reference Counting) was removed. Now you code the same way on all of the platforms and have to call free or if you must call freeAndNil (freeAndNil is in 99.999999999999999999% a code smell.)

     


  4. 17 minutes ago, Rollo62 said:

    n the webinar Q&A Marco Cantu was confirming that this update is binary compatible to the last version and that this was deeply tested before release.

    He also mentioned that there are some corner cases where it's not and he believes that we should not have those cases. Best is to recompile everything.

    • Like 1

  5. 27 minutes ago, Denis Dresse said:

    Thanks for this links,

    but it do not adresses the TRichEdit.SelText problematic, which transform the "Courier New" font, when some special characters are given to SelText (ex : ═  alt 205 et ─ alt 196...)

    Denis

    I quick google search returned this one: https://devblogs.microsoft.com/math-in-office/richedit-font-binding/

    I have to warn you that this is a bug in MS Richedit implementation. I've entered into Microsoft Word using Courier New 11 ──────────────────────────────. No problem there, then copied to the clipboard and pasted to Wordpad.exe the result wordpad changed the font to Segoe UI Symbol 11.


  6. 1 minute ago, David Heffernan said:

    Easier to replace the CRT monitor with an LCD

    Do you get burn-in with LCD?
     
     
     
    While LCDs are not susceptible to burn-in the same way CRT monitors are, LCDs suffer from what manufacturers call image persistence. Like the burn-in on CRTs, image persistence on LCD monitors is caused by the continuous display of static graphics on the screen for extended periods.

    (I am not going to test this on my monitor)

  7. I would do something like this:

     

    var
      ws: TWindowState;
      l: TRect;
    begin
      ws:=WindowState;
      l:=BoundsRect;
      try
        if ws=wsMaximized then
          WindowState:=TWindowState.wsNormal;
    
        SetBounds(l.Left+1, l.Top+1, l.Width, l.Height);
        Repaint;
        Sleep(100);
      finally
        WindowState:=ws;
        if ws<>TWindowState.wsMaximized then
          SetBounds(l.Left, l.Top, l.Width, l.Height);
        repaint;
      end;
    end;

     


  8. In this case Fetchoptions doesn't make a difference. in order to do a client side filter the computer has to load all the data and then can filter out the requested records.

    • Like 1
×