2022年4月28日 星期四

template book front cover title subtitle publisher translator author summary blurb table of contents chapter appendix glossary index reference


 

https://tex.stackexchange.com/questions/573047/how-to-format-bibliography-in-table-of-contents-as-part-instead-of-chapter-with

 https://en.wikipedia.org/wiki/Book_design

https://www.iuniverse.com/en/resources/publishing/parts-of-your-book

2022年4月26日 星期二

如何使用 Win32 API 存取 RS232

 http://www.finetech.idv.tw/techdoc/bcbrs232/bcbrs232.htm

 https://stackoverflow.com/questions/820817/low-level-control-of-rs232-com-port-rts-cts-dtr-dsr-possible

Win32 API Communication Functions  

BOOL SetCommState(
    HANDLE hFile,    // handle of communications device
    LPDCB lpDCB            // address of device-control block structure
   );

 
    Windows App Win32 API System Services Winbase.h

SetCommState function (winbase.h)

 
http://delphi-kb.blogspot.com/2009/03/how-to-communicate-with-com-port.html
https://docs.microsoft.com/zh-tw/windows/win32/api/winbase/nf-winbase-setcommstate 


unit ComPort;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  TComPort = class(TObject)
  private
    ComID, ComError: Integer;
    DcbOld: TDCB;
    CommTimeoutsOld: TCommTimeouts;
  protected
  public
    function Open(PortNo: integer): boolean;
    procedure Close;
    function Config(Baudrate: DWORD; ByteSize, StopBits, Parity: Byte): boolean;
    function ReadBlock(var Ch: array of char; BlockSize: dword): integer;
    function ReadChar(var Ch: char): boolean;
    function WriteBlock(var Ch: array of char; BlockSize: dword): boolean;
    function WriteChar(Ch: char): boolean;
    procedure Purge;
    function Error: integer;
    constructor Create;
  published
  end;



https://docs.microsoft.com/en-us/previous-versions/ms810467(v=msdn.10)?redirectedfrom=MSDN

Serial Communications in Win32
multiple threading and synchronization in Win32. In addition, a basic understanding of the Win32 heap functions is useful to fully comprehend the memory management methods used by the Multithreaded TTY (MTTTY) 

spcomm mscomm Tcomm Cport CnRS232 MScom SPCOM

Delphi串口通信技术与工程实践

 

https://github.com/MHumm/ComPortDriver

https://github.com/CWBudde/ComPort-Library

https://github.com/joelsernamoreno/WSD/blob/master/tools/nodemcu-flasher-master/SPComm.pas

https://torry.net/pages.php?id=198

http://www.tetraedre.com/advanced/serial/msdn_serial.htm

powershell "$port= new-Object System.IO.Ports.SerialPort

https://theitbros.com/how-to-delete-com-ports-in-use/

Docs Windows Server Windows 命令 參考
mode
顯示 [系統狀態]、[變更系統設定] 或 [重新設定埠] 或 [裝置]。 如果使用時不含參數,則 模式 會顯示主控台和可用 COM 裝置的所有可控制屬性。

https://docs.microsoft.com/zh-tw/windows-server/administration/windows-commands/mode

DLL "LoadLibrary " +"delphi" import dll Libraries and Packages Delphi

 "LoadLibrary "  +"delphi"   import dll Libraries and Packages Delphi

 Dr.Bob's Delphi Clinic: Using C DLLs with Delphi (and HeadConv v4.20)

 https://www.drbob42.com/Delphi/headconv.htm

 http://www.drbob42.com/tools/drbob.htm

 Dr.Bob's SwarTools: Dr.Bob's Collection of Delphi Experts/Wizards v2.50

 https://infosys.beckhoff.com/english.php?content=../content/1033/tcsample_bdelphi/html/TcAdsOcx_Setup_Delphi.htm&id=

 https://www.mql5.com/en/articles/96

https://blogs.embarcadero.com/how-to-use-a-c-dll-in-any-delphi-program/

 http://etutorials.org/Programming/mastering+delphi+7/Part+II+Delphi+Object-Oriented+Architectures/Chapter+10+Libraries+and+Packages/Creating+a+DLL+in+Delphi/

 https://github.com/PacktPublishing/Delphi-High-Performance/tree/master/Chapter%208

 http://etutorials.org/Programming/mastering+delphi+7/Part+II+Delphi+Object-Oriented+Architectures/Chapter+10+Libraries+and+Packages/Using+Existing+DLLs/

http://theprofessionalspoint.blogspot.com/2014/01/calling-conventions-in-delphi-safecall.html

 https://docwiki.embarcadero.com/RADStudio/Sydney/en/Program_Control_(Delphi)

Delphi DLL function stdcall external

COM Component Object Model  

COM+ 

DCOM Distributed Component Object Model

 https://stackoverflow.com/questions/17937225/delphi-how-to-import-type-library-for-new-itextrange2-type-interfaces

 tlibimp Embarcadero Type Library Exporter

 RegAsm

https://blogs.embarcadero.com/using-a-net-assembly-via-com-in-delphi/ 

 DLL external COM Component Object Model  interface

https://docwiki.embarcadero.com/RADStudio/Sydney/en/Overview_of_COM_Technologies

Using Visual C++ DLLs in a C++Builder Project

https://blogs.embarcadero.com/use-the-dll-created-by-visual-c-2017-with-c-builder-win64/

https://www.marshallsoft.com/wsc_4c.pdf

Windows Standard Serial Communications for C/C++ ...

https://github.com/sefcom/honeyplc/blob/master/snap7/doc/Snap7-refman.pdf

https://github.com/sefcom/honeyplc

https://sourceforge.net/projects/libusb-win32/

embarcadero import tools  DLL external COM Component Object Model Importing Type Library Information

https://www.c-sharpcorner.com/UploadFile/nipuntomar/describing-com-component-object-model/

Component Object Model Importing Type Library Information guid interface

 CoCreateInstance IDispatch IUnknow

The following is a list of tips and tricks that might be useful to COM developers of all levels. If you have an interesting tip that's not listed here, please submit it to me and I'll add it to the list if I think it's useful.

http://www.techvanguards.com/com/tutorials/tips.asp

https://www.codeproject.com/Questions/373094/In-the-c-plus-plus-to-Delphi

GPIB-488

 This is one-purpose program created for management of experiment on custom  aparatus. His goal take measurements of values for computation if Seebeck  coefficient

 https://github.com/pinkavaj/seebrez/blob/master/GPIB-488/Language%20Interfaces/Delphi/GPIB.PAS

 seebrez/GPIB-488/Language Interfaces/Delphi/

 https://www.ni.com/zh-tw/support/downloads/drivers/download.ni-488-2.html#442610

  NI-488.2 with LabVIEW

 

 

 

 

 

 

 

 

https://github.com/pinkavaj/seebrez/tree/master/TPCM.

Base64 Image System.NetEncoding.TBase64Encoding

https://github.com/emn178/hi-base64

 https://github.com/whatwg/wattsi/blob/main/src/lib/base64encoder.pas

 https://docwiki.embarcadero.com/Libraries/Sydney/en/System.NetEncoding.TBase64Encoding

unction BaseImage(fn: string): string;
var
    m1: TMemoryStream;
    m2: TStringStream;
    str: string;
begin
    m1 := TMemoryStream.Create;
    m2 := TStringStream.Create('');
    m1.LoadFromFile(fn);
    EncdDecd.EncodeStream(m1, m2);                       
    str := m2.DataString;
    str := StringReplace(str, #13, '', [rfReplaceAll]); 
    str := StringReplace(str, #10, '', [rfReplaceAll]);
    result := str;                                      
    m1.Free;
    m2.Free;
end;

 https://flixengineering.com/archives/270

 http://www.delphimagazine.com/2019/05/21/5-minute-snack-base64-encode-and-decode-images-in-delphi/

  1. procedure TFrmMain.btnLoadImageClick(Sender: TObject);
  2. var
  3. LInput : TMemoryStream;
  4. LOutput: TMemoryStream;
  5. begin
  6. // show open file dialog
  7. if
  8. dlgOpen.Execute then
  9. begin
  10. // load image into image component (TPicture)

  11. Image.Picture.LoadFromFile(dlgOpen.FileName);
  12. LInput := TMemoryStream.Create;
  13. LOutput := TMemoryStream.Create;

  14. // write picture to stream and encode
  15. try
  16. Image.Picture.SaveToStream(LInput);
  17. LInput.Position := 0;
  18. TNetEncoding.Base64.Encode( LInput, LOutput );
  19. LOutput.Position := 0;
  20. Memo.Lines.LoadFromStream( LOutput );
  21. finally
  22. LInput.Free;
  23. LOutput.Free;
  24. end;
  25. end;
  26. end;
  27.  

 

  1. procedure TFrmMain.btnLoadTextClick(Sender: TObject);
  2. var
  3. LInput: TMemoryStream;
  4. LOutput: TMemoryStream;
  5. begin
  6. if dlgOpen.Execute then
  7. begin
  8. Memo.Lines.LoadFromFile(dlgOpen.FileName);
  9. LInput := TMemoryStream.Create;
  10. LOutput := TMemoryStream.Create;

  11. try
  12. Memo.Lines.SaveToStream(LInput);
  13. LInput.Position := 0;
  14. TNetEncoding.Base64.Decode( LInput, LOutput );
  15. LOutput.Position := 0;
  16. Image.Picture.LoadFromStream(LOutput);
  17. finally
  18. LInput.Free;
  19. LOutput.Free;
  20. end;
  21. end;
  22. end;

unit uPublicSHA256WithRsa;

interface

uses Winapi.Windows,System.Classes, System.SysUtils,libeay32,ComObj;


const
  BIO_FLAGS_BASE64_NO_NL = $100;

type
  TSHA1Buffer = array [1..20] of byte;
  TSHA256Buffer= array[1..32] of Byte;
  TRSA_Buf_1024 = array[1..128] of byte; //1024bit RSA 樓躇怀堤
  TRSA_Buf_2048 = array[1..256] of byte; //2048bit RSA 樓躇怀堤

  TAES_Key_128 = array[1..16] of byte;

  TMD5_Digest = array[1..16] of byte;//md5 靡賦彆

  THA256_Digest = array[1..16] of byte; //SHA256 靡賦彆


  PsfAES_CBC_Data=^TsfAES_CBC_Data;
  TsfAES_CBC_Data = record
    InBuf:Pointer;
    InLen:Integer;
    Key:TAES_Key_128;
    ivec:TAES_Key_128;
  end;

  psfRSA = ^libeay32.RSA;

  TSHA256WithRSAOpenSSL=class
  protected
    FstrPublicKey:AnsiString;
    FstrPrivateKey:AnsiString;
  protected
   
    function base64_decode(Data:PAnsiChar;DataLen:Cardinal;bSingleRow:Boolean=FALSE):AnsiString;
 
    function base64_encode(Data:Pointer;Len:Integer;bSingleRow:Boolean=FALSE):AnsiString;

    function LoadPublicKey(PUBLIC_Key:AnsiString):pEVP_PKEY;
    function LoadPrivateKey(PRIVATE_Key:AnsiString):pEVP_PKEY;
  public
    function SHA256WithRSASign(const TextBuf:PAnsiChar;BufLen:Integer):AnsiString;
    function SHA256WithRSASign_verify(Data:PAnsichar;RsaSign:PAnsichar):Boolean;

    constructor Create(PUBLIC_Key,PRIVATE_Key:AnsiString);
    destructor Destroy; override;
  end;


implementation

uses
  uLogThread;

{ TSHA256WithRSAOpenSSL }

function TSHA256WithRSAOpenSSL.base64_decode(Data: PAnsiChar; DataLen: Cardinal;
  bSingleRow: Boolean): AnsiString;
var
  BIO,b64:PBIO;
  L:Integer;
begin
  b64 := Libeay32.BIO_new(BIO_f_base64());
  if bSingleRow then
    BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL);
  bio := Libeay32.BIO_new_mem_buf(Data,DataLen);
  bio := Libeay32.BIO_push(b64, bio);
  SetLength(Result,DataLen);
  L := Libeay32.BIO_read(bio,PAnsichar(Result),Length(Result));
  SetLength(Result,L);
  Libeay32.BIO_free_all(bio);

end;

function TSHA256WithRSAOpenSSL.base64_encode(Data: Pointer; Len: Integer;
  bSingleRow: Boolean): AnsiString;
var
  bio,b64:libeay32.pBIO;
  bptr: libeay32.PBUF_MEM ;
  pbptr:libeay32.PPBUF_MEM;
  I:Integer;
begin
  b64 := libeay32.BIO_new(BIO_f_base64());
  TRY
    if bSingleRow then
    begin
      libeay32.BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL);
    end;

    bio := libeay32.BIO_new(BIO_s_mem());

    b64 := BIO_push(b64, bio);

    I := libeay32.BIO_write(b64, Data, Len);
    if I < 0 then
      Exit;
    I := libeay32.BIO_flush(b64);

    pbptr := @bptr;
    I := libeay32.BIO_get_mem_ptr(b64, pbptr); //頗蔚BIO_C_GET_BUF_MEM_PTR紱釬換菰跤bio
    if I < 0 then
    begin
      Result := '';
      Exit;
    end;

    SetLength(Result,bPtr^.length);
    Move(bPtr^.data^,Result[1],bPtr^.length);
  FINALLY
    libeay32.BIO_Free_All(b64); //坻頗庋溫淕跺蟈沭
  END;

end;

constructor TSHA256WithRSAOpenSSL.Create(PUBLIC_Key, PRIVATE_Key: AnsiString);
begin
  try
    OpenSSL_add_all_algorithms;
    OpenSSL_add_all_ciphers;
    OpenSSL_add_all_digests;
    ERR_load_crypto_strings;
    ERR_load_RSA_strings;

    FstrPublicKey :=PUBLIC_Key;
    FstrPrivateKey :=PRIVATE_Key;

    if FstrPublicKey='' then
      raise Exception.Create('PublicKey Invalid');

    if FstrPrivateKey='' then
      raise Exception.Create('Privatekey Invalid');
  except
    on e:Exception do
    begin
      aiLog.Info(Format('[TSHA256WithRSAOpenSSL.Create][message=%s]',[e.Message]));
      raise e;
    end;
  end;
end;

destructor TSHA256WithRSAOpenSSL.Destroy;
begin
  try
    EVP_cleanup;
    ERR_free_strings;
    inherited;
  except
    on e:Exception do
    begin
      aiLog.Info(Format('[TSHA256WithRSAOpenSSL.Destroy]',[e.Message]));
      raise e;
    end;
  end;
end;


function TSHA256WithRSAOpenSSL.LoadPrivateKey(
  PRIVATE_Key: AnsiString): pEVP_PKEY;
var
  keyBO : PBIO;
  aRsa:pEVP_PKEY;
  iRet:integer;
begin
  aRsa :=nil;
  keyBO :=nil;

  keyBO := BIO_new_mem_buf(PAnsiChar(PRIVATE_Key),Length(PAnsiChar(PRIVATE_Key)));
  try
    Result := PEM_read_bio_PrivateKey(keyBO,aRsa,nil,nil);
  finally
    BIO_free_all(keyBO);
  end;
end;

function TSHA256WithRSAOpenSSL.LoadPublicKey(PUBLIC_Key: AnsiString): pEVP_PKEY;
var
  keyBO: PBIO;
  aRsa:pEVP_PKEY;
begin

  aRsa :=nil;
  keyBO :=nil;

  keyBO := BIO_new_mem_buf(PAnsiChar(PUBLIC_Key),Length(PAnsiChar(PUBLIC_Key)));
  try
    Result :=PEM_read_bio_PUBKEY(keyBO,aRsa,nil,nil)
  finally
    BIO_free_all(keyBO);
  end;
end;

function TSHA256WithRSAOpenSSL.SHA256WithRSASign(const TextBuf: PAnsiChar;
  BufLen: Integer): AnsiString;
var
  outSHA256: TSHA256Buffer;
  RSA_SignBinValue: TRSA_Buf_2048;
  CTX:EVP_MD_CTX;
  mLen:cardinal;
  SigLen,iRet:Integer;
  priKey:pEVP_PKEY;
begin
  ZeroMemory(@outSHA256,Length(outSHA256));
  ZeroMemory(@RSA_SignBinValue,Length(RSA_SignBinValue));

  priKey :=LoadPrivateKey(FstrPrivateKey);

  if priKey=nil then exit;

  EVP_MD_CTX_init(@CTX);
  try
    EVP_SignInit(@CTX,EVP_sha256());
    EVP_SignUpdate(@CTX,TextBuf,BufLen);
    EVP_DigestFinal(@CTX,@outSHA256,mLen);
    iRet := libeay32.RSA_sign(EVP_sha256()._type,
                                @outSHA256,
                                mLen,
                                @RSA_SignBinValue,
                                @SigLen,
                                priKey.pkey.rsa);

    if iRet > 0 then
      Result := base64_encode(@RSA_SignBinValue,SizeOf(RSA_SignBinValue),TRUE);
  finally
    EVP_PKEY_free(priKey);
    EVP_MD_CTX_cleanup(@CTX);
  end;
end;

function TSHA256WithRSAOpenSSL.SHA256WithRSASign_verify(Data,
  RsaSign: PAnsichar): Boolean;
var
  Sha256Buf:TSHA256Buffer;
  ctx: EVP_MD_CTX;
  RsaBuf: AnsiString;
  mlen: DWORD;
  iRet: Integer;
  pEVPKey:pEVP_PKEY;
begin
  Result :=false;
  pEVPKey :=LoadPublicKey(FstrPublicKey);

  if pEVPKey=nil then Exit;

  RSA_memory_lock(pEVPKey.pkey.rsa);
  libeay32.EVP_MD_CTX_init(@ctx);
  try
    EVP_SignInit(@ctx,EVP_sha256());
    EVP_SignUpdate(@ctx,Data,StrLen(Data));
    EVP_DigestFinal(@ctx,@Sha256Buf,mlen);
    RsaBuf := base64_decode(RsaSign,StrLen(RsaSign),TRUE);
    iRet := RSA_verify(EVP_sha256()._type,@Sha256Buf,SizeOf(Sha256Buf),PAnsichar(RsaBuf),Length(RsaBuf),pEVPKey.pkey.rsa);
    Result := (iRet = 1);
  finally
    EVP_PKEY_free(pEVPKey);
    libeay32.EVP_MD_CTX_cleanup(@ctx);
  end;
end;

end.

2022年4月25日 星期一

delphi +"Recurs" recursive Recurse TTreeView TTreeNode rtti Reconstruct full paths from a TreeView in delphi

 https://tech-story.net/reconstruct-full-paths-from-a-treeview-in-delphi/

https://delphisources.ru/pages/faq/master-delphi-7/content/LiB0053.html

http://www.drbob42.com/uk-bug/hood-01.htm

https://theroadtodelphi.com/2010/10/10/fun-with-delphi-rtti-dump-a-trttitype-definition/

2022年4月24日 星期日

Delphi Vcl.Ribbon Ribbon Controls office style

 https://docwiki.embarcadero.com/RADStudio/Sydney/en/Creating_an_Application_that_Uses_Ribbon_Controls

 https://stackoverflow.com/questions/6327845/creating-ribbon-styled-applications

https://www.add-in-express.com/add-in-delphi/com-addins.php

 https://bilsen.com/windowsribbon/index.shtml

https://github.com/JAM-Software/RibbonFramework 



Delphi  Vcl.ActnMan Vcl.ActnList Vcl.ActnMenus Vcl.ActnCtrls

https://docwiki.embarcadero.com/RADStudio/Sydney/en/Handling_VCL_Actions_Using_an_Action_List

https://github.com/orwah/Arabic-Delphi-VCL-Units

https://docwiki.embarcadero.com/Libraries/Sydney/en/Vcl.ActnMan

2022年4月22日 星期五

Awesome Pascal Awesome Communications Serial port

 https://asmen.icopy.site/awesome/awesome-pascal/#serial-port

Awesome Pascal Awesome

Communications

Serial port


https://sourceforge.net/projects/comport/
https://sourceforge.net/projects/tpapro/
https://sourceforge.net/p/synalist/code/HEAD/tree/trunk/synaser.pas

讓你的代碼變好看

http://delphi.org/2019/10/pretty-printing-your-source-code/ 

https://github.com/EnlighterJS/EnlighterJS

https://team411.github.io/src2img/

https://carbon.now.sh/

https://codeimg.io/

https://highlightjs.org/

https://wsmoak.net/2015/09/16/presenting-source-code.html

螢幕抓圖

https://getgreenshot.org/screenshots/

https://delphiaball.co.uk/2014/09/08/using-ttask-from-the-parallel-programming-library/

 https://delphiaball.co.uk/2014/09/08/using-ttask-from-the-parallel-programming-library/

Using TTask from the Parallel programming library
 

Parallel Programming with Delphi XE7; a quick introduction
Next PostTTask.IFuture from the Parallel Programming Library

Snippet

Object Pascal C++ Code snippets 13 Things About C++ Software You May Not Know

 https://blogs.embarcadero.com/13-things-about-c-software-you-may-not-know/

Table of Contents

    1. How to build and compile your applications at maximum speed with TwineCompile
    2. Did you know how easy it is to run Python in C++ Builder apps?
    3. Can I run Delphi / Object Pascal code in my C++ apps?
    4. Have you used folding scopes in your code yet?
    5. Do you create debugging breakpoints the easy way?
    6. Are you using Ctrl+Space for Code Completion and Code Insight?
    7. Did you know you can hit the Tab key for Code Template completion?
    8. Are you using Error Insight to speed up your development?
    9. How to use RAD Studio Deployment Manager to add your application’s sounds, images and other ad-hoc files
    10. How do I use the Ctrl+ F1 Help key to find details about a method?
    11. Use Ctrl+Enter to open file in that line
    12. How do I set up icons for my application?
    13. Did you know you can compile C++ projects by using msbuild command in console/terminal window?

 https://community.embarcadero.com/index.php/article/technical-articles/1044-coderage-9-snippet-consuming-object-pascal-code-from-c-apps-using-c-11-lambdas

 https://castle-engine.io/modern_pascal_introduction.html#_loops_for_while_repeat_for_in

Coderage 9 Snippet - Consuming Object Pascal code from C++ apps using C++11 Lambdas

package manager DelphI

 https://memnarch.bplaced.net/blog/delphinus/#projects

 
https://github.com/DGH2112/Package-Viewer
DGH Package Viewer

You can install Delphinus package manager and then install Package Viewer there. (Delphinus-Support)

Delphinus | Sparetime-Development

delphi tools api get all installed packages IOTAToDoServices IOTAProjectFileStorage IOTAProjectFileStorageNotifier IOTAProjectFileStorageNotifier

 delphi tools api get all installed packages IOTAToDoServices IOTAProjectFileStorage IOTAProjectFileStorageNotifier IOTAProjectFileStorageNotifier

 https://www.davidghoyle.co.uk/WordPress/

Notify me of everything… – Part 1 – Dave's Development Blog

https://www.davidghoyle.co.uk/WordPress/?p=1272

Delphi Class RTTI Explorer Hierarchy IDE Explorer Expert

 https://stackoverflow.com/questions/691989/full-vcl-class-browser-for-delphi

 https://blog.dummzeuch.de/delphi-ide-explorer-expert/

 https://docwiki.embarcadero.com/RADStudio/Sydney/en/Viewing_Hierarchy_of_Classes,_Interfaces,_and_Types_in_the_Class_Explorer

 https://theroadtodelphi.com/2010/10/04/fun-with-delphi-rtti-rtti-explorer-lite/

 https://theroadtodelphi.com/2010/10/04/fun-with-delphi-rtti-rtti-explorer-lite/types-view/

 http://etutorials.org/Programming/mastering+delphi+7/Part+IV+Delphi+the+Internet+and+a+.NET+Preview/Chapter+22+Using+XML+Technologies/Programming+with+the+DOM/

 https://blog.dummzeuch.de/delphi-ide-explorer-expert/

https://www.delphipraxis.net/140771-delphi-2010-rtti-demo-delphidiver%99.html  

Delphi 2010 RTTI-Demo: DelphiDiver™

 http://essmodel.sourceforge.net/

 https://www.drbob42.com/delphi/property.htm

 https://torry.net/pages.php?id=270

 https://www.delphipraxis.net/

 http://www.festra.com/eng/les03.htm

 https://smartmobilestudio.com/

 https://blog.dummzeuch.de/delphi-ide-explorer-expert/

 https://www.drbob42.com/delphi/property.htm

http://www.choosepill.com/components/cpcrbtree.htm 

https://delphisources.ru/pages/faq/master-delphi-7/content/LiB0097.html

DELPHI Object Inspector TPropertyAttributes 

 https://blog.karatos.in/a?ID=00100-8e5ec27e-d7c6-49f6-a6ab-4da08ef2cf04

RegisterPropertyEditorProc  DesignEditors.TVariantProperty.GetAttributes


https://www.davidghoyle.co.uk/WordPress/

Delphi JSON Viewer

 https://edn.embarcadero.com/article/40882

https://sourceforge.net/projects/radstudiodemos/

 

 A JSON Media Type for Describing the Structure and Meaning of JSON
                               Documents
                        draft-zyp-json-schema-02

https://datatracker.ietf.org/doc/html/draft-zyp-json-schema-02

 

2022年4月21日 星期四

Current mirror drives multiple pulsed-current mirror comprising drives thermal-runaway effect

 Current mirror drives multiple  pulsed-current mirror comprising  drives  thermal-runaway effect

 MOSFET - Current Mirror Explained

 https://www.edn.com/current-mirror-drives-multiple-leds-from-a-low-supply-voltage/

https://www.youtube.com/watch?v=Jmu02dErhdg

 

2022年4月20日 星期三

路徑規劃

 Tool Path Planning algorithm Contour Raster Zigzag Contour  Spiral Hybrid Hilbert filling

concorde directory TSP  Solver  

concorde directory TSP Solver  TSP ETSP directly ATSP

Traveling Salesperson Problem

2022年4月19日 星期二

油包水

 paraffin Pickering emulsion

https://zh.wikipedia.org/wiki/%E7%9A%AE%E5%85%8B%E6%9E%97%E4%B9%B3%E6%B6%B2

 https://www.sciencedirect.com/science/article/abs/pii/S1226086X17302824

https://www.mdpi.com/2073-4360/11/7/1115/htm

 https://www.researchgate.net/publication/343387125_Water-in-oil_emulsions_stabilized_by_surfactants_biopolymers_andor_particles_A_review

 surfactants emulsification water-in-oil emulsion wax

 Saponification esterification Petrochemistry

SIO2  Sol-gel

iscussion of Sol-gel Preparation of Nanoscaled SiO2 Particles

2022年4月18日 星期一

concorde directory Concorde TSP Travelling Salesperson Problems Solver qsopt

 https://hackaday.io/project/158802/logs

   https://www.swmath.org/?term=traveling%20salesman

concorde directory Concorde TSP Travelling Salesperson Problems  Solver   qsopt 

    TSPLIB
    Referenced in 696 articles [sw00983]
    following problem classes are available. Symmetric traveling salesman problem (TSP) Hamiltonian cycle problem (HCP) Asymmetric ... traveling salesman problem (ATSP) Sequential ordering problem (SOP) Capacitated vehicle routing problem (CVRP...

    Concorde
    Referenced in 312 articles [sw04770]
    computer code for the symmetric traveling salesman problem (TSP) and some related network optimization problems...

    LKH
    Referenced in 138 articles [sw04735]
    Kernighan heuristic for solving the traveling salesman problem. Computational experiments have shown that...

    TSPTW
    Referenced in 37 articles [sw04709]
    with time windows. The Traveling Salesman Problem with Time Windows (TSPTW) is the problem...

    GTSP Instances Library
    Referenced in 14 articles [sw14651]
    Generalized Traveling Salesman Problem (GTSP) is an extension of the Traveling Salesman Problem (TSP), where...


Using the NEOS Server for concorde/TSP

Web Submission Form
Concorde data(xy-list file, L2 norm)
Enter the complete path to the file with the xy-list (distances measured in the Euclidean(L2) norm)
Concorde data(xy-list file, L1 norm)
Or, enter the complete path to the file with the xy-list (distances measured in the Manhattan(L1) norm)
Concorde data(TSPLIB format file)
Or, enter the complete path to the symmetric TSPLIB file
Algorithm Choose the algorithm (cqs=QSopt, con=CPLEX [default], lk=Lin-Kernighan) Concorde(CPLEX)
Concorde(QSopt)
Lin-Kernighan