2021年12月14日 星期二

Using Reference Counting Assign AssignTo

 Making the Assignment (賦值操作)
Most VCL components don't implement any support for assignment between instances.
Most VCL helper classes - TPersistent descendants intended for use as properties in components, such as TFont, TPen,
and TBrush - do support assignment.
A few special classes, such as TClipboard, contain extensive assignment support.
大部份的VCL元件不實作任何支援物件間的賦值操作.

https://docwiki.embarcadero.com/Libraries/Sydney/en/System.Classes.TPersistent.Assign
System.Classes.TPersistent.Assign

https://docwiki.embarcadero.com/RADStudio/Sydney/en/Using_Reference_Counting
Using Reference Counting

https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Implementing_Interfaces#Implementing_Interfaces_by_Delegation
Implementing Interfaces by Delegation

https://stackoverflow.com/questions/22649433/delphi-interface-reference-counting
Delegating to an Interface-Type Property

https://docwiki.embarcadero.com/Libraries/Sydney/en/System.SysUtils.Supports
System.SysUtils.Supports

 

2021年12月13日 星期一

delphi 資源

 https://github.com/Fr0sT-Brutal/awesome-delphi

https://asmcn.icopy.site/awesome/awesome-delphi/

Awesome Pascal

https://landof.dev/awesome/pascal/ 
https://sourceforge.net/software/product/Delphi/alternatives

Synapse provides an easy to use serial port and synchronous TCP/IP library.

 Synapse provides an easy to use serial port and synchronous TCP/IP library. 

https://wiki.freepascal.org/Synapse#Overview

Overview

Synapse offers serial port and TCP/IP connectivity. It differs from other libraries that you only require to add some Synapse Pascal source code files to your code; no need for installing packages etc. The only exception is that you will need an external crypto library if you want to use encryption such as SSL/TLS/SSH.

See the documentation on the official site (link below) for more details.
Installation

Installation can be as simple as simply copying over all files to your application directory and adding the relevant Synapse units to your uses clause.

A more elegant and recommended way is compiling the laz_synapse.lpk package so you can use the same units in all your projects.

Synapse download/SVN info page: Synapse download page
Support and bug reporting

The Synapse project has a mailing list where support is given and patches can be submitted.

Bug reports can also be mailed to the mailing list.

See the Synapse support page
SSL/TLS support

You can use OpenSSL, CryptLib, StreamSecII or OpenStreamSecII SSL support with Synapse. By default, no SSL support is used.

The support is activated by putting the chosen unit name in the uses section in your project. You also have to put the binary library file in your project path (Windows), or install it into your library search path (Linux, macOS, FreeBSD).

Synapse loads SSL library files in runtime as dynamic libraries.

    For detailed information refer to SSL/TLS Plugin Architecture
    Some crypt libraries can be obtained from: http://synapse.ararat.cz/files/crypt/

Missing library

On Linux you need to make sure the required dynamic library is present/installed on your system. In case of cryptlib if the library is not present on the system, an error message appears during linking:

/usr/bin/ld: cannot find -lcl

A similar message will be displayed when using other dynamic libraries.

delphi runtime DFM object serializer for Delphi

 delphi runtime DFM

http://www.delphigroups.info/2/07/520442.html

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

https://githubmemory.com/repo/jean-lopes/dfm-to-json/issues/2

 http://www.geekinterview.com/question_details/31033

 http://www.delphigroups.info/2/77/421049.html

 http://www.delphigroups.info/2/02/300257.html

 http://www.delphigroups.info/2/75/299813.html

 http://www.delphigroups.info/2/07/520442.html

 DFM-serialization in depth https://www.codeproject.com/Articles/1060345/DFM-serialization-in-depth

delphi runtime DFM xml

Understanding Delphi Project and Unit Source Files 

https://coderedirect.com/questions/292800/delphi-txmldocument-created-at-run-time-generates-av-with-component-on-the-fo

https://www.thoughtco.com/understanding-delphi-project-files-dpr-1057652

https://reposhub.com/python/miscellaneous/ahausladen-DFMCheck.html

 

https://stackoverflow.com/questions/19989389/can-we-load-a-dfm-file-for-a-form-at-runtime/20011340

 


object serializer  Delphi


 

 mORMot / SynDB.pas

https://www.clevercomponents.com/articles/article040/

 https://docwiki.embarcadero.com/RADStudio/Tokyo/en/Serializing_User_Objects

https://github.com/anton-shchyrov/UrsJSON

 https://bitbucket.org/vkrapotkin/unescapejson/src/master/

https://github.com/onryldz/x-superobject

 

load a dfm file for a form at runtime

 
 load a dfm file for a form at runtime 

https://coderedirect.com/questions/382641/can-we-load-a-dfm-file-for-a-form-at-runtime
 

It is indeed possible to load a .dfm file at runtime and create the form represented by that dfm file.

I have written some code to do exactly that:

However: please note: You will need to add more RegisterClass(TSomeComponent) lines in the RegisterNecessaryClasses procedure. As written, if you, for example, try to load a .dfm file that includes a TSpeedbutton, you will get an exception: just add the RegisterClass(TSpeedbutton) to the RegisterNecessaryClasses procedure.

 

unit DynaFormF;  // This is a normal Delphi form - just an empty one (No components dropped on the form)

interface

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

type
  TfrmDynaForm = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmDynaForm: TfrmDynaForm;

implementation

{$R *.dfm}

end.
//////////////////////////////////////////////////////////////////////////
unit DynaLoadDfmU;
{$O-}
interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls, utils08, DynaFormF;

var
  DebugSL : TStrings;

procedure ShowDynaFormModal(Filename:String);

implementation

procedure RegisterNecessaryClasses;
begin
  RegisterClass(TfrmDynaForm);
  RegisterClass(TPanel);
  RegisterClass(TMemo);
  RegisterClass(TTimer);
  RegisterClass(TListBox);
  RegisterClass(TSplitter);
  RegisterClass(TEdit);
  RegisterClass(TCheckBox);
  RegisterClass(TButton);
  RegisterClass(TLabel);
  RegisterClass(TRadioGroup);
end;

type
  TCrackedTComponent = class(TComponent)
  protected
    procedure UpdateState_Designing;
  end;

var
  ClassRegistered : Boolean;

procedure RemoveEventHandlers(SL:TStrings);
const
  Key1 = ' On';
  Key2 = ' = ';

var
  i, k1,k2 : Integer;
  S        : String;

begin
  for i := SL.Count-1 downto 0 do begin
    S := SL[i];

    k1 := pos(Key1, S);
    k2 := pos(Key2, S);

    if (k1 <> 0) AND (k2 > k1) then begin
      // remove it:
      SL.Delete(i);
    end;

  end;
end;

procedure ReportBoolean(S:String; B:Boolean);
const
  Txts : Array[Boolean] of String = (
  'Cleared', 'Set'
  );

begin
  if Assigned(DebugSL) then begin
    S := S + ' : ' + Txts[B];
    DebugSL.Add(S);
  end;
end;

procedure SetComponentStyles(AForm:TForm);
var
  AComponent : TComponent;
  i          : Integer;
  B1, B2     : Boolean;

begin
  for i := 0 to AForm.ComponentCount-1 do begin
    AComponent := AForm.Components[i];
    if AComponent is TTimer then begin
      // TTIMER:
      B1 := csDesigning in AComponent.ComponentState;

      // Does not work: an attempt to make the TTimer visible like it is in Delphi IDE's form designer.
      TCrackedTComponent(AComponent).UpdateState_Designing;

      B2 := csDesigning in AComponent.ComponentState;
      ReportBoolean('Before setting it: ', B1);
      ReportBoolean('After  setting it: ', B2);
    end;
  end;
end;

procedure ShowDynaFormModalPrim(Filename:String);
var
  FormDyna : TfrmDynaForm;

  S1       : TFileStream;
  S1m      : TMemoryStream;
  S2       : TMemoryStream;
  S        : String;
  k1, k2   : Integer;
  Reader   : TReader;
  SLHelper : TStringlist;
  OK       : Boolean;

  MissingClassName, FormName, FormTypeName : String;

begin
  FormName     := 'frmDynaForm';
  FormTypeName := 'TfrmDynaForm';

  FormDyna := NIL;
  OK       := False;

  S1 := TFileStream.Create(Filename, fmOpenRead or fmShareDenyWrite);
  try
    S1m := TMemoryStream.Create;
    try
      SLHelper := TStringlist.Create;
      try
        SLHelper.LoadFromStream(S1);

        S := SLHelper[0];

        k1 := pos(' ', S);
        k2 := pos(': ', S);
        if (k1 <> 0) AND (k2 > k1) then begin
          // match:
          SetLength(S, k2+1);
          S := 'object ' + FormName + ': ' + FormTypeName;
          SLHelper[0] := S;
        end;

        RemoveEventHandlers(SLHelper);
        SLHelper.SaveToStream(S1m);
      finally
        SLHelper.Free;
      end;

      S1m.Position := 0;
      S2 := TMemoryStream.Create;
      try
        ObjectTextToBinary(S1m, S2);
        S2.Position := 0;

        Reader := TReader.Create(S2, 4096);
        try
          try
            FormDyna := TfrmDynaForm.Create(NIL);
            Reader.ReadRootComponent(FormDyna);
            OK       := True;
            SetComponentStyles(FormDyna);
          except
            on E:Exception do begin
              S := E.ClassName + '    ' + E.Message;
              if Assigned(DebugSL) then begin
                DebugSL.add(S);
                if (E.ClassName = 'EClassNotFound') then begin
                  // the class is missing - we need one more "RegisterClass" line in the RegisterNecessaryClasses procedure.
                  MissingClassName := CopyBetween(E.Message, 'Class ', ' not found');
                  S := '    RegisterClass(' + MissingClassName + ');';
                  DebugSL.Add(S);
                end;
              end;
            end;
          end;
        finally
          Reader.Free;
        end;
      finally
        S2.Free;
      end;
    finally
      S1m.Free;
    end;
  finally
    S1.Free;
  end;

  if OK then begin
    try
      FormDyna.Caption := 'Dynamically created form: ' + ' -- ' + FormDyna.Caption;
      FormDyna.ShowModal;

    finally
      FormDyna.Free;
    end;
  end else begin
    // failure:
    S := 'Dynamic loading of form file failed.';
    if Assigned(DebugSL)
      then DebugSL.Add(S)
  end;
end;

procedure ShowDynaFormModal(Filename:String);
begin
  if NOT ClassRegistered then begin
    ClassRegistered := True;
    RegisterNecessaryClasses;
  end;

  ShowDynaFormModalPrim(Filename);
end;

{ TCrackedTComponent }

procedure TCrackedTComponent.UpdateState_Designing;
begin
  SetDesigning(TRUE, FALSE);
end;

end. 
 
Windows

You can associate an event with a socket with WSAEventSelect and wait with WaitForMultipleObjectsEx for the data on the socket or mutex or semaphore event etc.
Linux

You can use the futex syscall with FUTEX_FD argument (however this has been removed from the kernel), or use eventfd to implement the condition variable.

And you can spawn a second thread that would be waiting on the condition variable, and signal the one waiting in select(). Or ask for signals when input is received on the socket, etc. See this related question.
 
 

The reason is because Delphi uses Automatic Reference Counting for Objects on mobile platforms (iOS and Android), but not on desktop platforms (Windows and OSX). Your Free() is effectively a no-op, because accessing the component from the Components[] property will increment its reference count, and then the Free() will decrement it (in fact, the compiler should have issued a warning about the code having no effect). The component still has active references to it (its Owner and Parent), so it is not actually freed.

If you want to force the component to be freed, you need to call DisposeOf() on it, eg:

for LIndex := form4.ComponentCount-1 downto 0 do
begin
  if form4.Components[LIndex] is TVertScrollBox then
  begin
    form4.Components[LIndex].DisposeOf;
  end;
end;

Alternatively, remove the active references and let ARC handle the destruction normally:

var
  VertScrollLink: TVertScrollBox;
  LIndex: Integer;
begin
  ...
  for LIndex := form4.ComponentCount-1 downto 0 do
  begin
    if form4.Components[LIndex] is TVertScrollBox then
    begin
      VertScrollLink := TVertScrollBox(form4.Components[LIndex]);
      VertScrollLink.Parent := nil;
      VertScrollLink.Owner.RemoveComponent(VertScrollLink);
      VertScrollLink := nil;
    end;
  end;
  ...
end;

That being said, you might consider keeping track of the component you create so you don't need to use a loop to find it later:

type
  TForm4 = class(TForm)
    procedure FormShow(Sender: TObject);
    ...
  private
    VertScrollLink: TVertScrollBox;
    ...
  end;

procedure TForm4.FormShow(Sender: TObject);
begin
  VertScrollLink := TVertScrollBox.Create(Self);
  VertScrollLink.Align := TAlignLayout.Client;
  VertScrollLink.Parent := Self;
end;
begin
  ...
  if Assigned(VertScrollLink) then
  begin
    VertScrollLink.DisposeOf;
    { or:
    VertScrollLink.Parent := nil;
    VertScrollLink.Owner.RemoveComponent(VertScrollLink);
    }
    VertScrollLink := nil;
  end;
  ...
end;
 

Delphi object bin­ary Serializing TWinControl Tpanel File save an object to a file in Delphi dfm

 save an object to a file in Delphi

http://robstechcorner.blogspot.com/2009/09/so-what-is-rtti-rtti-is-acronym-for-run.html

Delphi 2010 RTTI - The basics
Using Attributes and TCustomAttribute descendants
Exploring TRTTIType in depth
Introduction to TValue
Exploring TRttiMember Descendants in depth (Part I) Properties and Fields
Why I call TRttiContext.Create() and TRttiContext.Free()
Exploring TRttiMember Descendants in depth (Part II) Methods
TValue in Depth
INI persistence the RTTI way
Xml Serialization - Basic Usage
Xml Serialization - Control via Attributes
Attributes: Practical Example- Object to Client Dataset
Types by Package... Dynamic plug-in systems.

http://robstechcorner.blogspot.com/2009/10/xml-serialization-basic-usage.html
robstechcorner https://code.google.com/archive/p/robstechcorner/source

 Xml Serialization - Basic Usage http://robstechcorner.blogspot.com/2009/10/xml-serialization-basic-usage.html

// Method 1:
var
 o : TypeIWantToSerailze;
 s : TXmlTypeSerializer;
 x : TXmlDocument;
 v : TValue;
begin
  s := TXmlTypeSerializer.create(TypeInfo(o));
  x := TXmlDocument.Create(Self); // NEVER PASS NIL!!!
  s.Serialize(x,o);
  x.SaveToFile('FileName.txt');
  v := s.Deserialize(x);
  o := v.AsType<TypeIWantToSerailze>;
  x.free;
  s.free;
end;

// Method 2:
var
 o : TypeIWantToSerailze;
 s : TXmlSerializer<TypeIWantToSerailze>;
 x : TXmlDocument;
begin
  s := TXmlTypeSerializer<TypeIWantToSerailze>.create;
  x := TXmlDocument.Create(Self); // NEVER PASS NIL!!!
  s.Serialize(x,o);
  x.SaveToFile('FileName.txt');
  o := s.Deserialize(x);
  x.free;
  s.free;
end;

https://pavkam.dev/
 
https://stackoverflow.com/questions/2657502/practical-usage-for-delphis-new-rtti-attributes-values/2657604#2657604
The extended RTTI works like Reflection in .NET. It gives you access to your internal application structure information. You can access class properties, methods etc.. at runtime, at extent you could not do it before.

Some ways of using it:

    Serialization / Deserialization of classes to XML or other media
    Mapping of objects to databases. ORM.
    Cloning of objects
    Dynamic invocation of methods
    "Scanning" of object at runtime and acting according to that.
    Easier development of "plugin" type systems

There is probably a lot of scenarios where it would be beneficial to use it. In short it adds dynamic aspect to your application. Your product is able to do some things at runtime, and more efficiently, than designing everything at designtime. It is not a silver bullet and a lot of people may never use it. But some design patterns or some problems just cannot be solved (at least not in efficient way) without the use of the new RTTI

https://martinfowler.com/articles/injection.html
https://en.wikipedia.org/wiki/Dependency_injection
https://code.google.com/archive/redirect/a/code.google.com/p/delphi-spring-framework?movedTo=https:%2F%2Fbitbucket.org%2Fsglienke%2Fspring4d
https://martinfowler.com/articles/injection.html#ConstructorVersusSetterInjection
https://code.google.com/archive/redirect/a/code.google.com/p/delphi-spring-framework?movedTo=https:%2F%2Fbitbucket.org%2Fsglienke%2Fspring4d
https://delphihaven.wordpress.com/2009/09/02/d2010-rtti-and-active-scripting/

Delphi Haven
Just another Delphi programming port of call on the internet
My book

[Delphi XE2 Foundations]
Some code

    AutoCorrect Components v1.0.3
    CCR Exif v1.5.1
    Generic IDispatch Proxy Classes for Active Scripting (Delphi 2010+)
    Hunspell Wrapper
    Theming Owner-Drawn Tabs
 
Something new for something old: Delphi 2010’s RTTI and Active Scripting

https://theroadtodelphi.com/2009/10/27/convert-string-to-enum-using-delphi-prism/
http://www.malcolmgroves.com/blog/?p=476

RTTI and Attributes in Delphi 2010
How to serialize Delphi object
https://blog.dragonsoft.us/2008/04/21/how-to-serialize-delphi-object/

https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Working_with_RTTI
https://docwiki.embarcadero.com/Libraries/XE2/en/Main_Page

serialize Delphi object  bin­ary  seri­al­iz­a­tion

https://github.com/codejanovic/Delphi-Serialization
https://www.codeproject.com/Articles/1060345/DFM-serialization-in-depth
https://docwiki.embarcadero.com/RADStudio/Sydney/en/Serializing_User_Objects
https://coderedirect.com/questions/441027/binding-an-xml-node-to-a-tree-view-node

https://stackoverflow.com/questions/8782518/getting-the-size-of-a-class-or-object-in-the-same-format-as-a-file-size

https://stackoverflow.com/questions/65171574/how-to-calculate-delphi-class-size-using-tmemorystream-size

A case of using delphiXE RTTI to dynamically obtain information at runtime and obtain RttiType information of a TComponent class or TObject class
https://www.codetd.com/en/article/12146232


Delphi object  bin­ary  Serializing TWinControl  Tpanel File

Speech Synthesis & Speech Recognition: Using SAPI 5.1 Using TTS with Delphi CreateOLEObject('SAPI.SpVoice');

 Using TTS with Delphi
https://en.wikipedia.org/wiki/Microsoft_Speech_API

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


CreateOLEObject('SAPI.SpVoice');

voz := CreateOLEObject('SAPI.SpVoice');
if not VarIsEmpty(voz) then begin
 vozes := voz.getVoices;
 ComboVoz.Clear;
 for i := 0 to vozes.Count - 1 do
  ComboVoz.Items.Add(vozes.item(i).GetDescription);

  Dialogs, StdCtrls, SpeechLib_TLB, OleServer, XPMan, ExtCtrls, ComCtrls, ENGINE,

  TFlatCheckBoxUnit;
    SAPI: TSpVoice;
  PropriedsF: TPropriedsF;   
  SOTokenVoice: ISpeechObjectToken;  // See the MS SAPI SDK for info on
  SOTokenVoices:ISpeechObjectTokens; // registry tokens that hold resources
  VPT:= 'Você selecionou X como voz padrão do sistema.';
 
  SAPI.EventInterests := SVEAllEvents;
  SOTokenVoices := SAPI.GetVoices('','');  // Use the registry tokens
 
    //For each voice, store the descriptor in the TStrings list
    SOTokenVoice := SOTokenVoices.Item(i);
    CBFA.Items.AddObject(SOTokenVoice.GetDescription(0), TObject(SOTokenVoice));
    //Increment descriptor reference count to ensure it's not destroyed
    SOTokenVoice._AddRef;
 
    CBFA.ItemIndex := CBFA.Items.IndexOf(SAPI.Voice.GetDescription(0));
 
  TB.Position := SAPI.Rate;
  EDTEST.TEXT:= TROCA('X', SAPI.Voice.GetDescription(0), VPT);
var SOTokenVoice:  ISpeechObjectToken;
begin
  SOTokenVoice   := ISpeechObjectToken(Pointer(CBFA.Items.Objects[CBFA.ItemIndex]));
  SAPI.Voice := SOTokenVoice;
  EDTEST.TEXT:= TROCA('X', SAPI.Voice.GetDescription(0), VPT);
  if SAPI.Voice = nil then
  SAPI.Speak(EDTEST.Text, 1);
  SpFileStream1: TSpFileStream;
  FileName : TFileName;
  T: TSTRINGLIST;
  I: INTEGER;
  T:= TSTRINGLIST.CREATE;
  T.LoadFromFile(EXTRACTFILEPATH(PARAMSTR(0))+'LISTA.TXT');
  FileName := extractfilepath(paramstr(0))+'RAQUEL\'+T[I];
  SpFileStream1 := TSpFilestream.Create(nil);
  SpFileStream1.Open(FileName, SSFMCreateForWrite, False);
  SAPI.AudioOutputStream := SPFileStream1.DefaultInterface;
  SAPI.Speak(COPY(T[I], 1, POS('.', T[I])-1), SVSFDefault);
  SPFileStream1.Close;
  SpFileStream1.Free;


procedure TForm1.FormClick(Sender: TObject);
var
  SpVoice: Variant;
begin
  SpVoice := CreateOleObject('SAPI.SpVoice');
  SpVoice.Speak('this is a test', 0);
end;


SpVoice GetVoices method (SAPI 5.3) | Microsoft Docs
 
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleServer, SpeechLib_TLB,ActiveX, ComCtrls,ControlCenter;
 
SpVoice1: TSpVoice;
SpSharedRecoContext1: TSpSharedRecoContext;
ProgressBar1: TProgressBar;
SRGrammar: ISpeechRecoGrammar;
CmdLine:string;
ControlActive:Boolean;
adeSoundControl: TadeSoundControl;
 
SOToken: ISpeechObjectToken;
SOTokens: ISpeechObjectTokens;
SOTokens := SpVoice1.GetVoices('', '');
SOToken := SOTokens.Item(id);
SpVoice1.Voice := SOToken;
SpVoice1.Rate:=speech;
SpVoice1.Volume:=100;
spvoice1.Speak(str,SVSFDefault);
Speecker(StrToInt(Edit2.Text),StrToInt(Edit3.Text),Edit1.Text);
 
 
https://github.com/halilhanbadem/delphi-google-speech-to-text
https://www.youant.net/

https://github.com/SirAlex/delphi-jose-jwt
Delphi JOSE and JWT Library
https://github.com/grijjy/DelphiGoogleAPI
Using the Google Cloud Platform APIs

 
voice: OLEVariant;
  voice := CreateOLEObject ('SAPI.SpVoice');
  voice.Voice := voice.GetVoices.Item(combobox1.ItemIndex); // current voice selected
  voice.volume := tbVolume.position;
  voice.rate := tbRate.position;
  voice.Speak (s, SVSFDefault);
  voice.Speak (s, SVSFlagsAsync);
  repeat  Sleep(100); until  voice.WaitUntilDone(10);
 

TMainForm = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
   voice: OLEVariant;
   procedure SayIt(const s:string);
  end;

var
  MainForm: TMainForm;

implementation

uses
   ComObj;

{$R *.dfm}
procedure TMainForm.SayIt(const s:string); // s is the string to be spoken
const
  SVSFDefault = 0;
  SVSFlagsAsync = 1;
  SVSFPurgeBeforeSpeak= 2;
begin
  memo1.setfocus;
  voice.Voice := voice.GetVoices.Item(combobox1.ItemIndex); // current voice selected
  voice.volume := tbVolume.position;
  voice.rate := tbRate.position;
  voice.Speak (s, SVSFlagsAsync {or SVSFPurgeBeforeSpeak});
end;


procedure TMainForm.Button1Click(Sender: TObject);
begin
  SayIt('Hello');
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
  voice := CreateOLEObject('SAPI.SpVoice');
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
  voice  := Unassigned;
end;

end.
https://stackoverflow.com/questions/12117883/sapi-with-dephi-async-speech-doesnt-work


https://github.com/kimond/Jarvis-Project/blob/master/pyttsx/drivers/sapi5.py

MSSAM = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\Voices\\Tokens\\MSSam'
MSMARY = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\Voices\\Tokens\\MSMary'
MSMIKE = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\Voices\\Tokens\\MSMike'

MSSam  MSMary MSMike


http://www.blong.com/conferences/dcon2002/speech/SAPI51/SAPI51.htm

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

 Speech Synthesis & Speech Recognition: Using SAPI 5.1 


procedure TfrmTextToSpeech.FormCreate(Sender: TObject);
var
  I: Integer;
  SOToken: ISpeechObjectToken;
  SOTokens: ISpeechObjectTokens;
begin
  SendMessage(lstProgress.Handle, LB_SETHORIZONTALEXTENT, Width, 0);
  //Ensure all events fire
  SpVoice.EventInterests := SVEAllEvents;
  Log('About to enumerate voices');
  SOTokens := SpVoice.GetVoices('', '');
  for I := 0 to SOTokens.Count - 1 do
  begin
    //For each voice, store the descriptor in the TStrings list
    SOToken := SOTokens.Item(I);
    cbVoices.Items.AddObject(SOToken.GetDescription(0), TObject(SOToken));
    //Increment descriptor reference count to ensure it's not destroyed
    SOToken._AddRef;
  end;
  if cbVoices.Items.Count > 0 then
  begin
    cbVoices.ItemIndex := 0; //Select 1st voice
    cbVoices.OnChange(cbVoices); //& ensure OnChange triggers
  end;
  Log('Enumerated voices');
  Log('About to check attributes');
  tbRate.Position := SpVoice.Rate;
  lblRate.Caption := IntToStr(tbRate.Position);
  tbVolume.Position := SpVoice.Volume;
  lblVolume.Caption := IntToStr(tbVolume.Position);
  Log('Checked attributes');
end;

XP style TXPManifest is used to enable run-time themes in your application.

 Dialogs, OleCtrls, SHDocVw, StdCtrls, ExtCtrls, XPMan, ComCtrls,MSHTML;
 
   ActiveX;

TXPManifest
Vcl.XPMan.TXPManifest

https://docwiki.embarcadero.com/Libraries/Sydney/en/Vcl.XPMan.TXPManifest

TXPManifest is used to enable run-time themes in your application.

Common Controls and XP Themes

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

2021年12月12日 星期日

織帶機

 織帶機

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

Braiding machine Horn Gear 

Loom Braiding Machine Woven Knitting

 Enhance Production Rate of Braiding Machine Using Speed Reduction Technique 

 Rope Braiding Machine  Offering Mild Steel Horn Gear Set for Industrial, SMGC Braiders

Weaving on the Ashford Jack Loom

Paradise Mill How The Jacquard Mechanism Works
















2021年12月11日 星期六

DelphiStuff Download page La pagina e' in allestimento, abbiate pazienza qualche altro giorno. Nel frattempo, prelevate pure quello che c'e'!

 http://web.tiscali.it/I2/delphistuff/links.htm

La pagina dei links  Links page http://web.tiscali.it/I2/delphistuff/links.htm

DelphiStuff Download page

La pagina e' in allestimento, abbiate pazienza qualche altro giorno. Nel frattempo, prelevate pure quello che c'e'!
Ultimo aggiornamento: 07.11.99
       EasterStuff.zip
   Una serie di aiuti e routines per determinare la data di Pasqua
xceedbkp.exe
   Una libreria + un set di componti per effettuare backup di files, drives ecc. E' Freeware per gli utenti finali, Shareware per i produttori di software.
 xceedzip.exe
    Una libreria + un set di componenti per comprimere in formato ZIP qualsiasi file. E' Freeware per gli utenti finali, Shareware per i produttori di software.
format_1.zip
Un esempio su come formattare un dischetto (delphi 1 o 2?)
passhack.zip
Un esempio di programma che ti consente di ottenere le password dimenticate del tuo sistema
GifImage.zip
   Componente free per la gestione dei GIF animati
modemspy_1.zip
   Un programma completo di sorgente che consente di tenere sotto controllo i segnali del modem
Delphi-Directx.zip
   Ovvero, come realizzare un videogame con le DirectX. I componenti sono accompagnati da un sorgente di videogioco!
spheres.zip
   Sources di un salvaschermo
floppystuff.zip
Tutto quello che occorre per leggere, scrivere e formattare un dischetto con delphi. Se qualcuno realizza qualche cosa, mi mandi il sources in EMAIL, grazie!
Gestionale.zip
Una unit di supporto che contiene tutte le piu' comuni funzioni gestionali, per realizzare programmi di contabilita', gestionali di azienda ecc. ecc.
spacesrc.zip
I sorgenti di un videogame spaziale! In turbopascal!
gms.zip
 Fatemi sapere se qualche link non va con una semplice email
Torna a DelphiStuff
    Delphi Super Page Really the best Delphi site at this time. A lot of components, tools and applications. Recieve user uploads by ftp or e-mail. Perfect job by Robert M. Czerwinski. Mirrors: Australia(1), Australia(2), Czech Republic, Finland, Germany, Italy, Japan(1), Japan(2), Korea, Portugal, Russia, Switzerland South Africa, Turkey, United Kingdom, USA.
    Richey's Delphi-Box By Richard Fellner. Richey's Delphi-Box - 1000++ links and answers for Delphi developers ..one of the best starting points for Delphi developers worldwide..
    Developers. href.com Makes it easy to find programming information and answers to tough Delphi questions. Updated daily, the site archives the full text of almost 200 programming newsgroups and already has more than 340,000 articles. Use it for quick full text searches and read articles conveniently. You will also see what can be made with Delphi, WebHub and Rubicon. Thanks to HREF.

        Abis Developer's Network - Source Code Gallery, abisMAG - magazine for developers, many more...
        AdaptAccounts - Delphi-based accounting system by Adapta Software Inc...
        Akzhan On The Web - While in Russian only. Delphi-related VCL & WinAPI, Database Delphi-oriented tips'n'tricks, Delphi-related Multi-tier FAQ, Component reviews etc...
        Alex Wernhardt's Homepage - The site is open to everyone and supports components, examples, programs and tips about Delphi, just and just Freeware...
        Alexey Fedorov's Homepage - A lot of useful code examples from exlusive editor of Russian edition of "ComputerPress"...
        Almer's Homepage - Delphi Related Links, components and more...
        Alvas Components Collection - Home of Alvas Components Collection...
        Anders Melander's Home on the Net - Components, projects and many useful information (bug fixes, file formats, etc)...
        Andrew's Freeware Delphi Components Review Page - Freeware components reviews
        Another Delphi Page - Freeware components
        Andy'z World - API written in Delphi 2.0 for people who want to write Internet applications such as chat, games. Currently requires beta testers in Delphi, C++ and VB
        Apogee Online - Has nice Delphi and IntraBuilder sections. The home of The Delphi Knowledge Base
        ArGo Software Design - Freeware and shareware components
        Artem Berman Home Page - Home of many useful components and programs.
        Ask the Delphi Pro - You really could ask the question and get an answer. Also big archive of Q&A and solved problems.
        Automated QA Inc: Memory Leaks and How to Plug Them - Thanks to the work of Atanas Stoyanov and feedback from many loyal MemProof users, we have compiled a list of memory leaks in Delphi and appropriate workarounds to eliminate them.
        Ben Ziegler's Delphi Pages - Lots of free source code including WABD (Web Application Builder for Delphi), and a Print Preview Component, and more ...
        BDE Alternatives Guide - The BDE Alternatives Guide is the definitive source of information on non-BDE database access solutions for Delphi...
        Big Wave Dave's Delphi Destination - Components, patches, mailing list...
        Bill White's Delphi Components - Installer components
        Boris Ingram's Page - Components and tools
        Brad Clarke's Web Site - Here you could find Delphi 3 and Delphi 4 Information Pages
        Brendan's Delphi Corner - Discussion about program design, ask your questions
        Business Software - Home of BWS Data Workshop, BSBatch and useful free components
        BuyPin Delphi Faq - Tips and tricks for Delphi developers...
        Bytamin-c.com - Pages for C++ Builder programers, full of tips and triks, links, etc...
        Calitz Bros Delphi Page - Printing components for Delphi and C++ Builder
        Calling Dr. Marteens... - Contains tricks and tips, and articles on Delphi & C++ Builder (Spanish only)
        Cetus Links: Object-Orientation (by Manfred Schneider) - More than 10000 Links to Object-Orientation Sites
        Cipher Development Lab - non-commercial site dedicated to software developers. The main languages covered are Visual Basic, Delphi and Java.
        Code Corner - Delphi controls with source by Gordon Bamber
        Coder's Knowledge Base - Delphi category at the Coder's Knowledge Base
        Chris & Tim's Rapid Application Development Homepage - Components, bugs, documents, links...
        Chuck's Delphi Pages - Components, books, links, Delphi Ring...
        Classic Software - Classic Software develops Delphi components, including the TcsNotebook component which is part of the Classic Component Set
        Code Colorizer - CodeColorizer can convert your Active Server Pages, C/C++, Clipper, Delphi/Pascal, HTML, Java, JavaScript and Visual Basic source code to colorized (syntax highlighted) HTML documents.
        ComputingSite: Delphi Channel - Collection of links to different Delphi sites...
        Cyber Directory of Delphi Developers - It's a new site but more and more Delphi developers have registered and communicate via Email...
        Cyberhome of John W. Small - Delphi, C++ and Java shareware stuff
        Dart Communications - TCP/IP SDK, OLE toolkits...
        Dave Baldwin's Delphi Utilities - HTML viewer. Animation and tab listbox component...
        David Berneda - The Delphi chart component library
        Delfai - Many useful resourses for Delphi and C++ Builder (apps, components, tools, links,...)
        Delphi 2 Java - Converts your Delphi sources to Java...
        Delphi 5 Information Page - Fresh information about Delphi 5...
        Delphi64 - New site with components, links and so on...
        Delphi Alliance - In Czech Republic was born new Delphi initiative to creating complex Delphi library and tools (like WebBroker , MIDAS , TCPIP replacements)....
        Delphi Bug List - Delphi bug list by Reinier Sterkenburg
        Delphi Cryptography Page - Cryptography components, units, examples...
        Delphi Dalnet Website - Components, Programs, Tips and Tricks, Tutorial...
        Delphi Heritage Controls - Free tips, docs, tutors, components and applications with full source...
        Delphi Internet Programing - Components, tips, examples for Delphi Internet programers...
        Delphi - Dicas e Tutorial - Tips and tutorial (in Portugal)...
        Delphi HyperActive - A open-source resource center for Delphiers by African Dancer...
        Delphi Kingdom - Virual Club of Delphi prgramers (in Russian)...
        Delphi Deloght - New site with components, tools, links and so on...
        Delphi Procedures and Functions Library - Small functions and procedures...
        Delphi Programming - Components, samples, links to technical docs, books and so on...
        Delphi and Pascal Programming Tutorials - Tutorial for Delphi and Pascal programers...
        Delphi Technology Club - Articles and Tips for Delphi programers (in Russian)...
        Delphi3.com - Components, Delphi Yellow Pages and many more...
        Delphi Club - Let's make this Club a great point to developers share ideas, comments, codes, etc...
        Official Delphi 4 Developer's Guide homepage - Information about "Delphi 4 Developer's Guide" book by Steve Teixeira and Xavier Pacheco...
        Delphi-Games-Creator - There you can find components wich you help developing little Jump'n'Runs and Games...
        Delphi CGI Components - Components and utilities for web sites
        Delphi Collection - Documents, patches, the unofficial newsletter of Delphi users...
        Delphi...Delphi...Delphi... - Nice Delphi pages in Malaysia
        Delphi Central - Delphi Articles, Tutorials and Hints...
        Delphi DAO Home Page - Information resource for Delphi developers which are using Access/DAO ...
        Delphi Developers Library - Various components
        Delphi Homepage - FAQ, tips, componets...
        Delphi Gold Resource CD - VCL source, DLL's, VBX's, tips & tricks...
        Delphi Internet Pages - Useful examples for Delphi for ISAPI, MIDAS etc..
        Delphi Information Connection - Very good site, long time was "dead", but now try to come back...
        Delphi Job Hunter - Delphi Job Hunter provides a matching service for Delphi programmers and Delphi employers...
        Delphi Jobs - If you are a Delphi developer, looking for a position, check it out...
        Delphi Jobs - This the other site with the same name. If you are a Delphi developer, looking for a position, check it out...
        Delphi JobsExpress - Here Employers could post Delphi Job openings and Developers could register here for job announcements by email
        DelphiMag.com - Site by Informant Communications Group, publisher of "Delphi Informant" (DI). This site features tips and tricks, how to articles, book reviews, product reviews, third-party product information, and industry news columns from DI. In addition, www.DelphiMag.com will offer additional articles, reviews, news bits, and product information not included in DI...
        DelphiLand - Free Delphi programming lessons, online and for download. Also Delphi tips, source code, freeware...
        Delphi Message Board - New place for Delphi for questions and tips....
        Delphi Planet - The Delphi Planet was established to provide timely news coverage about Delphi itself and about third party component packages...
        Delphi Prefix Registry - The Delphi Prefix Registry has been designed to list component creators, the prefixes they use and contact details.
        Delphi Programming Source Code Web Site - Components, tips, samples and many other stuff, related to Delphi...
        Delphi Programmers Ring - Webring for Delphi Developers by Bjoern Ischo, free and steadily growing....
        Delphi My Favorite - A top-100 of Delphi components
        Delphi Nerds' Playground - Components, tips and so on...
        Delphi Resource Gallery - Components, sample applications, technical white papers, and links to Delphi related pages. Also home of Delphi Knowledge Base application
        Delphi Search Engine - The Delphi Seach Engine allows you to search for Delphi related web sites on several search engines without finding lots of references to Delphi internet services, out of date message boards, Greece and other irrelvances to Delphi Programmers.
        Delphi Snippet's - These pages contains several Borland Delphi and Borland CBuilder examples, articles and links to other pages with free source code.
        Delphi Stop - A lot of components, code examples. Well organized site.
        Delphi Tips - Components, tips, how to's, tips of the week and much more. Provided by Gustav Evertsson.
        Delphi WebPository - Books, components, usergroups and links to FTP sites
        Delphi World - Usergroups, FTP sites...
        Delphi@PT - Components, examples, links...
        Developer Express - Home of many great components, such as ExpressGrid, ExpressBar and so on...
        Developer Express Support Forum - Questions, answers, tips, ideas....
        DFL Software - Image and chart components
        Die Delphipage - Delphi site by Michael Hoffacker. Contains components, applications and so on (German only)...
        Dirk Brouwer's Page - Delphi resources, java...
        dWinsock Home Page - Home of dWinsock component
        Dr. Bob's Delphi, C++ Builder and JBuilder Clinics - Book reviews, links and articles
        Eagle Software - Home of Component Developer Kit, reAct and Raptor
        efg's Computer Lab - Reference Library and Mostly Delphi Projects: Graphics, Image Processing, Mathematics, Fractals, Chaos, ... Projects and Lab Reports
        Electric Dreams - FAQ, tips & tricks and a few components
        Engineering Objects International - Useful classes for use with Delphi and C++ Builder...
        Epsylon Technologies - One of the bigest Russian Borland distributors. Also the home of Baikonur.
        EQSoft - Home of very nice component collections. Nake a look...
        Evgeny Links Page - Links to various components, applications, sites and so on...
        Experts Exchange - Good place to find answers to Delphi (and others) questions...
        FAQSYS - Site, full of theory and algorithm og graphic programming...
        Frank's Delphi Lessons - Free Delphi Lessons, Example Prgms, Help Libraries...
        Frank's Delphi Pages - Collection of problems and solutions for Delphi Developers...
        Franz Glaser's Delphi Pages - Turbo Pascal pages with big Delphi section...
        Francois Piette Delphi Page - Freeware components, mostly Internet related with good samples...
        Gavina Software - Gavina Software Department Website. Home of many nice shareware and freeware components...
        GJL Software - GJL Software Website. Home of Database Utilities, excellent and powerfull tool for database and Delphi developers alike especially those using the BDE and works with a variety of database formats...
        Andrey Grigoriev Developers Page - Various Delphi, C++ Builder, Interbase stuff and more...
        Helpfile-Builder - Specialises in simple yet professional tools for winhelp and HTML help generation and management.
        High Gear - Delphi 1.0 and 2.0 components
        Hans Lohninger's Delphi Components - TDirTree, TRChart and others
        HREF Tools Corporation - Home of WebHub and associated components...
        Sky Line Tools Imaging - SkyLine Tools Imaging is an award winning software toold development company dedicated to providing cutting edge imaging technology to programmers in the Delphi and C++ Builder Market...
        Inprise Online - Inprise's Main Page
        Additional Tools & Components - Additional tools and components for Delphi, mostly commercial
        Inprise: Russian site - The copy of Main site in Russian
        Delphi - Delphi Main Page
        Delphi 1.0 - Delphi 1.0 Page
        Delphi Booklist - A very complete Delphi booklist
        Developer's Corner - Developer's Corner Page
        Info Recs - Delphi Links, User Groups and Other Links
        Tech Library - technical articles
        Tech Tips - Tech Tips Page
        Technical Support - Technical Support Page
        Interface Ltd - One of the best place when teach, how to work with Delphi and other products
        John Goyvaerts' Page - Freeware and shareware components
        John Taylor's Delphi Site - Shareware, freeware, links, java...
        John's Little Nook - Delphi Places of Interest - Components and links
        K.Nishita's Homepage - Home of NishitaView
        Marat Delphi Page - Components, tips, samples, links and so on (in Russian)
        MainTron Delphi Page - New site, which will brings you components, tips, samples, links and so on
        Marko Tietz's Delphi Page - Tips & tricks
        MER Systems Search Engines - This archive contains over 1,100,000 news messages from the Inprise newsgroups. This includes a wealth of information on Delphi, C++Builder, JBuilder, Interbase (and more).
        Mike Marsden's Borland Delphi Links - Links, usergroups
        Mike Shkolnik Homepage - Home of several nice components (SMReport, SMExport)
        Mike Sutton's Delphi Directory - Job for programers
        Mindi's Delphi Pages - Hints, tips, documents, resourses and so on...
        MultiLizer - Multi language support to your Delphi applications
        Nataly Elmanova Home Page - Home page of author of "Introduction to Borland C++ Builder" book (in Russian). Here you can download C++ Builder samples.
        Nevrona Designs - Home of ReportPrinter Pro and AdHocery component suites
        Object Lessons - Educational Services and Resources for Borland Delphi.
        OOPSoft, Inc. - Home of Object Express and SQL Express.
        Open Delphi Forum - Delphi Queries & Answers. There are about 100.000 articles stored in the archive (Italian version only).
        Phillip Gussows Delphi Homepage - Freeware Delphi components with source and soon a Java section
        ProDelphi - The source code profiler for Delphi 2/3/4 - Source code for Delphi source code Profiler by Helmuth J.H. Adolph
        Programmers Heaven - Useful files, links and so on
        Programming Resource Megasite - Contains a large collection of programs, and programming related tutorials, source code, links, ideas, etc....
        Programming Tips - Collection of useful programing tips...
        Radek Delphi Page - Components, applications, links and many more...
        Raize Software Solutions, Inc. - This site contains product information on "Raize Components for Delphi," updates to "Developing Custom Delphi Components", and source code for the "Delphi By Design" column.
        Reinhard Kalinke Homepage - Freeware and Shareware components.
        Ruslan Delphi Page - A Delphi site with forum, tips and tricks, downloads, links. Also information about C++ Builder, Borland C++, MS Visual C++, ActiveX.
        Russian System Developments - Home of Auto Visual Component Library 32. Components, code examples, tips and more.
        RU.DELPHI Too Frequently Asked Questions - Too Frequently Asked Questions of RU.DELPHI hierarchy (in Russian).
        Samara Delphi & Interbase Club - Club for Delphi and Interbase developers. There you could find comonents, tools and so on...
        Sanjay Kanade's Delphi Tricks'N'Tips - Various tips for Delphi programers...
        Security Central - Special site for software security and protection.
        Sergei Orlic's Home page - The home of eXpert Development Kit.
        Silicon Commander Games Delphi Resource Page - Sprite toolkit, high resolution timer...
        siComponents Home page - Home of the siComponents for Delphi and C++ Builder...
        Skyline Consulting - Turkish company, which specialized in applications localization. Home of TRoex and Delphi Notebooks...
        SourceSite - All the source code you need...
        South Pacific Information Services Ltd - Home of TCompress, TCompLHA and Web components...
        Stargate - Site with Delphi material: personnal tools and components, always free (with or w/o source code), always original (in French and English)...
        Stefan Hoffmeister's list of Delphi resources - FAQs, Knowledge Bases, Mailing lists, Large WWW sites that add value to the Delphi community...
        Steven Kamradt's Delphi Zone - Featuring Custom Delphi Components, Delphi written Applications, and Delphi Links...
        Swiss Delphi Center - Components, tips, links for Delphi programers...
        Tamarack Associate - Home of Rubicon Search Engine...
        Technical Computer Forums - The 800+ forums offer "peer-to-peer" based support on just about every issue you can imagine...
        The.Tower - Various tools for DelphiX...
        The Adrock Software Development Team - A lot of useful components, links and many more...
        The C++ Builder Information and Tutorial Site - Very useful site. Many links to other C++ Builder places...
        The City Zoo - FAQ, tips & tricks, announcements, articles...
        The Coriolis Group - Articles, shareware, press releases, java...
        The DCU Store - Components, links and so on...
        The #1 Delphi Pages - Looks like this site tooks all the best features from Top Delphi Sites...
        The Delphi Companion - Articles, FAQ, tips, books, database stuff, java...
        The Delphi Source - Books, FAQ, unofficial newsletter by Robert Vivrette...
        The Delphi Station - Information, freeware/shareware and lots of links
        The Ultimate Developer's Resource Site - A big collection of links, not only Delphi
        The Waldi - Contains tips and tricks for Delphi programers, links and many more...
        Tips and Tricks for Delphi - Tips and Tricks for Delphi by Peter Tiemann
        Toryu's D1 Page - Components for Delphi 1, and some applications (without source).
        Trucomania - Site of Delphi Tips. Looks very useful...
        Turbo - Game development site dedicated to Borland compilers (Delphi, C++ Builder, JBuilder)
        Turbo Power Software - Great commercial components with free preview
        TWorldMap Component - A great world map component. Both 16 and 32 bit versions
        VIRT Laboratory - Home of TVirtComp components...
        WestSide Software - Home of TZipList and TZipView components... and more...
        WideProject - Home of several programs, written in Delphi and something more...
        Woric's Tracelog Application - Tracelog is personal 32-bit tracing application. It was originally written to debug only Delphi applications, but these days in addition to the native Delphi version there is a COM version for debugging ASP pages, WSH scripts or any other COM capable application (eg: VB, Word, Outlook, Cold Fusion).
        UtilMind Solutions - Formed Xacker's Delphi Workshop. Home of many useful freeware components and samples...
        XCL Pages - Home of eXtream Class Library. Let's make our Delphi program small... 

C++ (using files as database)

 http://www.cplusplus.com/doc/tutorial/files/

 https://code.sololearn.com/czgs0L9Om9WY/?ref=appt

 http://soprano.sourceforge.net/

 https://couchdb.apache.org/

 https://www.mongodb.com/

 https://study.com/academy/lesson/practice-using-files-as-databases-for-industry.html

 

 

 https://github.com/LEW21/sparqlxx

 sparqlxx

C++ semantic toolkit + sparqlite RDF database


A simple C++ library for manipulating scientific data sets as structured data

 https://www.researchgate.net/publication/2434170_A_simple_C_library_for_manipulating_scientific_data_sets_as_structured_data

 

 

A simple C++ library for manipulating
scientific data sets as structured data 



discussion.
References
[1] Object Management Group, http://www.omg.org
[2] Sayegh, A., CORBA - Standard, Spezifikationen, Entwicklung,
O’Reilly, Cambridge, 1997.
[3] MICO, a public-domain CORBA implementation, http://diamant-
atm.vsb.cs.uni-frankfurt.de∼mico/
[4] NCSA HDF group, http://hdf.ncsa.uiuc.edu/
[5] Xerox PARC, ftp://ftp.parc.xerox.com/pub/ilu/ilu.html
[6] Sun Microsystems, Java 2.0, http://java.sun.com/
[7] CERN IT/ASD Application Software & Databases,
http://wwwinfo.cern.ch/asd/cernlib/rd45/
22

This is a tutorial on how to build a block-based database with B-Tree index.

 https://github.com/nam178/FooDB

 

https://www.codeproject.com/Articles/1029838/Build-Your-Own-Database

ZWinLib - Simple C++ GUI Library for Windows Programs

  ZWinLib - Simple C++ GUI Library for Windows Programs
http://www.wernerzimmermann.name/media/files/ZWinLib.htm
simple dialog type graphical user interfaces to Windows console programs. ZWinLib does not try to be a competitor to full-fledged libraries like Microsoft Foundation Classes (MFC) or Trolltech's QT library. 

http://wernerzimmermann.name/open-source-software-projects.html

Windows Class Library ZWinLib

As I frequently needed small tools for my students' lab projects and didn't like solutions like MFC, wxWidgets or gtk available back then, I developed a set of lightweight class libraries for the Windows WIN32 API. ZWinLib allows to build graphical user interfaces and helps with TCP/IP and serial communication, while ZWinSQL provides C++ classes to deal with SQLite databases, ZWinXML encapsulates libXML and ZWinCrypt implements some crypto algorithms like RSA, AES and hash functions. The latter definitely is not encouraged, you should always use established and well-tested Crypto libraries like OpenSSL!

UnQLite is a in-process software library which implements a self-contained, serverless, zero-configuration, transactional NoSQL database engine.

 https://unqlite.org/

 

  UnQLite is a in-process software library which implements a self-contained, serverless, zero-configuration, transactional NoSQL database engine. UnQLite is a document store database similar to MongoDB, Redis, CouchDB etc. as well a standard Key/Value store similar to BerkeleyDB, LevelDB, etc.


UnQLite is an embedded NoSQL (Key/Value store and Document-store) database engine. Unlike most other NoSQL databases, UnQLite does not have a separate server process. UnQLite reads and writes directly to ordinary disk files. A complete database with multiple collections, is contained in a single disk file.

Keybase is secure messaging and file-sharing.

 https://keybase.io/

 

Keybase is secure messaging and file-sharing.
Keybase is an open source app

Keybase comes with everything you need to manage your identity, create secure chats, and share files privately. It's free.

It's fun too.

Over 100,000 people have joined Keybase so far to prove their identities, and it's growing rapidly.

Dear ImGui is a bloat-free graphical user interface library for C++

 https://github.com/ocornut/imgui

 

Dear ImGui

Dear ImGui is a bloat-free graphical user interface library for C++. It outputs optimized vertex buffers that you can render anytime in your 3D-pipeline enabled application. It is fast, portable, renderer agnostic and self-contained (no external dependencies).

Dear ImGui is designed to enable fast iterations and to empower programmers to create content creation tools and visualization / debug tools (as opposed to UI for the average end-user). It favors simplicity and productivity toward this goal, and lacks certain features normally found in more high-level libraries.

Dear ImGui is particularly suited to integration in games engine (for tooling), real-time 3D applications, fullscreen applications, embedded applications, or any applications on consoles platforms where operating system features are non-standard.

Mosquitto is an open source implementation of a server for version 5.0, 3.1.1, and 3.1 of the MQTT protocol.

 https://github.com/eclipse/mosquitto

 

Links

See the following links for more information on MQTT:

    Community page: http://mqtt.org/
    MQTT v3.1.1 standard: https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html
    MQTT v5.0 standard: https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html

Mosquitto project information is available at the following locations:

    Main homepage: https://mosquitto.org/
    Find existing bugs or submit a new bug: https://github.com/eclipse/mosquitto/issues
    Source code repository: https://github.com/eclipse/mosquitto

There is also a public test server available at https://test.mosquitto.org/

oneAPI Threading Building Blocks

 https://github.com/oneapi-src/oneTBB

C++ Libraries

 https://en.cppreference.com/w/cpp/header

 https://isocpp.org/std/status

https://en.wikipedia.org/wiki/Asio_C++_library

 https://en.wikipedia.org/wiki/Boost_(C%2B%2B_libraries)

https://pocoproject.org/index.html 

https://en.wikipedia.org/wiki/POCO_C%2B%2B_Libraries

 https://www.openssl.org/

 https://www.ffmpeg.org/

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

https://www.sqlite.org/index.html

https://en.wikipedia.org/wiki/Category:C%2B%2B_libraries


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