https://delphisources.ru/forum/showthread.php?t=29617
http://www.delphimaster.ru/articles/icmp.html
https://www.thoughtco.com/implementing-ping-without-using-raw-sockets-4068869
http://www.codenet.ru/progr/delphi/stat/ping.php
http://forum.delphimaster.net/cgi-bin/forum.pl?id=1530002471&n=4&toprint=1
http://forum.delphimaster.net/cgi-bin/forum.pl?id=1530002471&n=4
https://kursovik.com/programming.html?lang=delphi
Вернуться Форум по Delphi программированию > Все о Delphi > Интернет и сети
Перезагрузить страницу Нужно сделать ping на Delphi
Всем доброго времени суток! Задача избитая, но полноценного решения не нашел. Нужно сделать ping на Delphi. Нашел вроде хороший пример http://www.delphimaster.ru/articles/icmp.html , но не хватает мозгов как сделать, что бы размер буффера можно бло указывать произвольно? Не хватает мозгов переделать на динамический массив буффера данных. Кроме того хотелось бы услышать мнение по правильности этого кода, есть мнение, что этот код может вызывать утечки памяти... И еще интересно - в Delphi XE случайно не сделали "обертку" под использование функций из ICMP.DLL?
unit PingUnits;
interface
function Ping(Address:RawByteString):Boolean;
implementation
uses
Windows, Winsock, SysUtils;
const
IP_STATUS_BASE=11000;
IP_SUCCESS=0;
IP_BUF_TOO_SMALL=11001;
IP_DEST_NET_UNREACHABLE=11002;
IP_DEST_HOST_UNREACHABLE=11003;
IP_DEST_PROT_UNREACHABLE=11004;
IP_DEST_PORT_UNREACHABLE=11005;
IP_NO_RESOURCES=11006;
IP_BAD_OPTION=11007;
IP_HW_ERROR=11008;
IP_PACKET_TOO_BIG=11009;
IP_REQ_TIMED_OUT=11010;
IP_BAD_REQ=11011;
IP_BAD_ROUTE=11012;
IP_TTL_EXPIRED_TRANSIT=11013;
IP_TTL_EXPIRED_REASSEM=11014;
IP_PARAM_PROBLEM=11015;
IP_SOURCE_QUENCH=11016;
IP_OPTION_TOO_BIG=11017;
IP_BAD_DESTINATION=11018;
IP_ADDR_DELETED=11019;
IP_SPEC_MTU_CHANGE=11020;
IP_MTU_CHANGE=11021;
IP_UNLOAD=11022;
IP_GENERAL_FAILURE=11050;
IP_PENDING=11255;
MAX_IP_STATUS=IP_GENERAL_FAILURE;
type
ip_option_information = packed record // Информация заголовка IP (Наполнение
// этой структуры и формат полей описан в RFC791.
Ttl : byte; // Время жизни (используется traceroute-ом)
Tos : byte; // Тип обслуживания, обычно 0
Flags : byte; // Флаги заголовка IP, обычно 0
OptionsSize : byte; // Размер данных в заголовке, обычно 0, максимум 40
OptionsData : Pointer; // Указатель на данные
end;
icmp_echo_reply = packed record
Address : u_long; // Адрес отвечающего
Status : u_long; // IP_STATUS (см. ниже)
RTTime : u_long; // Время между эхо-запросом и эхо-ответом
// в миллисекундах
DataSize : u_short; // Размер возвращенных данных
Reserved : u_short; // Зарезервировано
Data : Pointer; // Указатель на возвращенные данные
Options : ip_option_information; // Информация из заголовка IP
end;
PIPINFO = ^ip_option_information;
PVOID = Pointer;
function IcmpCreateFile() : THandle; stdcall; external 'ICMP.DLL' name 'IcmpCreateFile';
function IcmpCloseHandle(IcmpHandle : THandle) : BOOL; stdcall; external 'ICMP.DLL' name 'IcmpCloseHandle';
function IcmpSendEcho(
IcmpHandle : THandle; // handle, возвращенный IcmpCreateFile()
DestAddress : u_long; // Адрес получателя (в сетевом порядке)
RequestData : PVOID; // Указатель на посылаемые данные
RequestSize : Word; // Размер посылаемых данных
RequestOptns : PIPINFO; // Указатель на посылаемую структуру
// ip_option_information (может быть nil)
ReplyBuffer : PVOID; // Указатель на буфер, содержащий ответы.
ReplySize : DWORD; // Размер буфера ответов
Timeout : DWORD // Время ожидания ответа в миллисекундах
) : DWORD; stdcall; external 'ICMP.DLL' name 'IcmpSendEcho';
function PingIp(Address:RawByteString):Boolean;
var
hIP : THandle;
pingBuffer : array [0..31] of Char;
pIpe : ^icmp_echo_reply;
wVersionRequested : WORD;
lwsaData : WSAData;
error : DWORD;
destAddress : In_Addr;
begin
Result:=False;
hIP := IcmpCreateFile();
GetMem( pIpe,
sizeof(icmp_echo_reply) + sizeof(pingBuffer));
try
pIpe.Data := @pingBuffer;
pIpe.DataSize := sizeof(pingBuffer);
wVersionRequested := MakeWord(1,1);
error := WSAStartup(wVersionRequested,lwsaData);
if (error <> 0) then
begin
Exit;
end;
destAddress.S_addr:=inet_addr(PAnsiChar(Address));
IcmpSendEcho(hIP,
destAddress.S_addr,
@pingBuffer,
sizeof(pingBuffer),
Nil,
pIpe,
sizeof(icmp_echo_reply) + sizeof(pingBuffer),
5000);
error := GetLastError();
if (error <> 0) then
begin
Exit;
end;
Result:=pIpe.Status=IP_SUCCESS;
finally
IcmpCloseHandle(hIP);
WSACleanup();
FreeMem(pIpe);
end;
end;
function HostToIP(name: RawByteString; var Ip: RawByteString): Boolean;
var
wsdata : TWSAData;
hostName : array [0..255] of ansichar;
hostEnt : PHostEnt;
addr : PAnsiChar;
begin
WSAStartup ($0101, wsdata);
try
gethostname (@hostName[0], sizeof (hostName));
StrPCopy(hostName, name);
hostEnt := gethostbyname (hostName);
if Assigned (hostEnt) then
if Assigned (hostEnt^.h_addr_list) then begin
addr := hostEnt^.h_addr_list^;
if Assigned (addr) then begin
IP := Format ('%d.%d.%d.%d', [byte (addr [0]),
byte (addr [1]), byte (addr [2]), byte (addr [3])]);
Result := True;
end
else
Result := False;
end
else
Result := False
else begin
Result := False;
end;
finally
WSACleanup;
end
end;
function Ping(Address:RawByteString):Boolean;
var
s:RawByteString;
begin
Result:=HostToIP(Address,s);
if Result then
Result:=PingIp(s);
end;
end.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
unit PingUnits;
interface
function Ping(Address:RawByteString):Boolean;
implementation
uses
Windows, Winsock, SysUtils;
const
IP_STATUS_BASE=11000;
IP_SUCCESS=0;
IP_BUF_TOO_SMALL=11001;
IP_DEST_NET_UNREACHABLE=11002;
IP_DEST_HOST_UNREACHABLE=11003;
IP_DEST_PROT_UNREACHABLE=11004;
IP_DEST_PORT_UNREACHABLE=11005;
IP_NO_RESOURCES=11006;
IP_BAD_OPTION=11007;
IP_HW_ERROR=11008;
IP_PACKET_TOO_BIG=11009;
IP_REQ_TIMED_OUT=11010;
IP_BAD_REQ=11011;
IP_BAD_ROUTE=11012;
IP_TTL_EXPIRED_TRANSIT=11013;
IP_TTL_EXPIRED_REASSEM=11014;
IP_PARAM_PROBLEM=11015;
IP_SOURCE_QUENCH=11016;
IP_OPTION_TOO_BIG=11017;
IP_BAD_DESTINATION=11018;
IP_ADDR_DELETED=11019;
IP_SPEC_MTU_CHANGE=11020;
IP_MTU_CHANGE=11021;
IP_UNLOAD=11022;
IP_GENERAL_FAILURE=11050;
IP_PENDING=11255;
MAX_IP_STATUS=IP_GENERAL_FAILURE;
type
ip_option_information = packed record // Информация заголовка IP (Наполнение
// этой структуры и формат полей описан в RFC791.
Ttl : byte; // Время жизни (используется traceroute-ом)
Tos : byte; // Тип обслуживания, обычно 0
Flags : byte; // Флаги заголовка IP, обычно 0
OptionsSize : byte; // Размер данных в заголовке, обычно 0, максимум 40
OptionsData : Pointer; // Указатель на данные
end;
icmp_echo_reply = packed record
Address : u_long; // Адрес отвечающего
Status : u_long; // IP_STATUS (см. ниже)
RTTime : u_long; // Время между эхо-запросом и эхо-ответом
// в миллисекундах
DataSize : u_short; // Размер возвращенных данных
Reserved : u_short; // Зарезервировано
Data : Pointer; // Указатель на возвращенные данные
Options : ip_option_information; // Информация из заголовка IP
end;
PIPINFO = ^ip_option_information;
PVOID = Pointer;
function IcmpCreateFile() : THandle; stdcall; external 'ICMP.DLL' name 'IcmpCreateFile';
function IcmpCloseHandle(IcmpHandle : THandle) : BOOL; stdcall; external 'ICMP.DLL' name 'IcmpCloseHandle';
function IcmpSendEcho(
IcmpHandle : THandle; // handle, возвращенный IcmpCreateFile()
DestAddress : u_long; // Адрес получателя (в сетевом порядке)
RequestData : PVOID; // Указатель на посылаемые данные
RequestSize : Word; // Размер посылаемых данных
RequestOptns : PIPINFO; // Указатель на посылаемую структуру
// ip_option_information (может быть nil)
ReplyBuffer : PVOID; // Указатель на буфер, содержащий ответы.
ReplySize : DWORD; // Размер буфера ответов
Timeout : DWORD // Время ожидания ответа в миллисекундах
) : DWORD; stdcall; external 'ICMP.DLL' name 'IcmpSendEcho';
function PingIp(Address:RawByteString):Boolean;
var
hIP : THandle;
pingBuffer : array [0..31] of Char;
pIpe : ^icmp_echo_reply;
wVersionRequested : WORD;
lwsaData : WSAData;
error : DWORD;
destAddress : In_Addr;
begin
Result:=False;
hIP := IcmpCreateFile();
GetMem( pIpe,
sizeof(icmp_echo_reply) + sizeof(pingBuffer));
try
pIpe.Data := @pingBuffer;
pIpe.DataSize := sizeof(pingBuffer);
wVersionRequested := MakeWord(1,1);
error := WSAStartup(wVersionRequested,lwsaData);
if (error <> 0) then
begin
Exit;
end;
destAddress.S_addr:=inet_addr(PAnsiChar(Address));
IcmpSendEcho(hIP,
destAddress.S_addr,
@pingBuffer,
sizeof(pingBuffer),
Nil,
pIpe,
sizeof(icmp_echo_reply) + sizeof(pingBuffer),
5000);
error := GetLastError();
if (error <> 0) then
begin
Exit;
end;
Result:=pIpe.Status=IP_SUCCESS;
finally
IcmpCloseHandle(hIP);
WSACleanup();
FreeMem(pIpe);
end;
end;
function HostToIP(name: RawByteString; var Ip: RawByteString): Boolean;
var
wsdata : TWSAData;
hostName : array [0..255] of ansichar;
hostEnt : PHostEnt;
addr : PAnsiChar;
begin
WSAStartup ($0101, wsdata);
try
gethostname (@hostName[0], sizeof (hostName));
StrPCopy(hostName, name);
hostEnt := gethostbyname (hostName);
if Assigned (hostEnt) then
if Assigned (hostEnt^.h_addr_list) then begin
addr := hostEnt^.h_addr_list^;
if Assigned (addr) then begin
IP := Format ('%d.%d.%d.%d', [byte (addr [0]),
byte (addr [1]), byte (addr [2]), byte (addr [3])]);
Result := True;
end
else
Result := False;
end
else
Result := False
else begin
Result := False;
end;
finally
WSACleanup;
end
end;
function Ping(Address:RawByteString):Boolean;
var
s:RawByteString;
begin
Result:=HostToIP(Address,s);
if Result then
Result:=PingIp(s);
end;
end.
В общем вместо
Код:
1
pingBuffer : array [0..31] of AnsiChar;
я написал
Код:
1
pingBuffer : array of AnsiChar;
Потом инициализирую переменную
Код:
1
SetLength(pingBuffer, 1452);
и заменил везде
Код:
1
sizeof(pingBuffer)
на
Код:
1
Length(pingBuffer)
Адрес массива передаю также:
Код:
1
pIpe.Data := @pingBuffer;
Вроде все работает, но вопрос - правильно ли я все сделал? Больше всего волнует вопрос: передача адреса на статический и динамический массив одинаково выполняется в Делфи? Я имею ввиду синтаксически...
Да, на счет 64 байт я тоже заметил, поэтому явно везде указал AnsiChar. А за @pingBuffer[0] спасибо, ошибок при работе не вызвало, остается только креститься и молиться, что бы работало
Note that the Winsock 1.1 WSAStartup function must be called prior to using the functions exposed by ICMP.DLL. If you do not do this, the first call to IcmpSendEcho will fail with error 10091 (WSASYSNOTREADY).
Below you can find the Ping unit's source code. Here are two examples of usage.
Example 1: Code Snippet
uses Ping;...
const ADP_IP = '208.185.127.40'; (* http://delphi.about.com *)
beginIf Ping.Ping(ADP_IP) then ShowMessage('About Delphi Programming reachable!');
end;
Example 2: Console Mode Delphi Program
Our next example is a console mode Delphi program that uses the Ping unit: . Here's the Ping unit's source:
unit Ping;
interfaceuses
Windows, SysUtils, Classes;
type
TSunB = packed record
s_b1, s_b2, s_b3, s_b4: byte;
end;
TSunW = packed record
s_w1, s_w2: word;
end;
PIPAddr = ^TIPAddr;
TIPAddr = record
case integer of
0: (S_un_b: TSunB);1: (S_un_w: TSunW);2: (S_addr: longword);
end;IPAddr = TIPAddr;
function IcmpCreateFile : THandle; stdcall; external 'icmp.dll';
function IcmpCloseHandle (icmpHandle : THandle) : boolean;
stdcall; external 'icmp.dll'
function IcmpSendEcho
(IcmpHandle : THandle; DestinationAddress : IPAddr;
RequestData : Pointer; RequestSize : Smallint;
RequestOptions : pointer;
ReplyBuffer : Pointer;
ReplySize : DWORD;
Timeout : DWORD) : DWORD; stdcall; external 'icmp.dll';
function Ping(InetAddress : string) : boolean;
implementationuses
WinSock;
function Fetch(var AInput: string;
const ADelim: string = ' ';
const ADelete: Boolean = true)
: string;
var
iPos: Integer;
begin
if ADelim = #0 then begin
// AnsiPos does not work with #0
iPos := Pos(ADelim, AInput);
end else begin
iPos := Pos(ADelim, AInput);
end;
if iPos = 0 then begin
Result := AInput;
if ADelete then begin
AInput := '';
end;
end else begin
result := Copy(AInput, 1, iPos - 1);
if ADelete then begin
Delete(AInput, 1, iPos + Length(ADelim) - 1);
end;
end;
end;
procedure TranslateStringToTInAddr(AIP: string; var AInAddr);
var
phe: PHostEnt;pac: PChar;GInitData: TWSAData;
begin
WSAStartup($101, GInitData);
try
phe := GetHostByName(PChar(AIP));
if Assigned(phe) thenbegin
pac := phe^.h_addr_list^;
if Assigned(pac) then
begin
with TIPAddr(AInAddr).S_un_b do begin
s_b1 := Byte(pac[0]);s_b2 := Byte(pac[1]);s_b3 := Byte(pac[2]);s_b4 := Byte(pac[3]);
end;
end
else
begin
raise Exception.Create('Error getting IP from HostName');
end;
end
else
begin
raise Exception.Create('Error getting HostName');
end;
except
FillChar(AInAddr, SizeOf(AInAddr), #0);
end;WSACleanup;
end;
function Ping(InetAddress : string) : boolean;
var
Handle : THandle;
InAddr : IPAddr;
DW : DWORD;
rep : array[1..128] of byte;
begin
result := false;Handle := IcmpCreateFile;
if Handle = INVALID_HANDLE_VALUE then
Exit;
TranslateStringToTInAddr(InetAddress, InAddr);
DW := IcmpSendEcho(Handle, InAddr, nil, 0, nil, @rep, 128, 0);Result := (DW 0);IcmpCloseHandle(Handle);
end;
end.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Пингуем (Ping) под Delphi
1
Пингуем (Ping) под Delphi
Протокол Ping предназначен для тестирования компьютерных соединений в Интернете путём посылки через протокол Internet Protocol (IP) по обределённому адресу сообщения и ожидания от него ответа.
ICMP - Internet Control Message Protocol. ICMP служит для передачи сообщений об ошибках а так же управляющих сообщений . ICMP-тест может показать насколько быстро проходит информация между двумя узлами в Интернете.
Запускаем Delphi;
В Новом проекте добавляем в форму Tbutton, Tedit и Tmemo;
Вставляем “winsock”;
объявляем структурку для IP-заголовка:
type IPINFO = record
Ttl : char;
Tos : char;
IPFlags : char;
OptSize : char;
Options : ^char;
end;
5. объявляем структурку для хранения ICMP пакета:
type ICMPECHO = record
Source : longint;
Status : longint;
RTTime : longint;
DataSize : Shortint;
Reserved : Shortint;
pData : ^variant;
i_ipinfo : IPINFO;
end;
6. Объявляем функции и процедуры, которые мы будем вызывать из ICMP.DLL
TIcmpCreateFile =
function():integer;{$IFDEF WIN32} stdcall; {$ENDIF}
TIcmpCloseHandle =
procedure(var handle:integer);{$IFDEF WIN32} stdcall;{$ENDIF}
TIcmpSendEcho =
function(var handle:integer; endereco:DWORD; buffer:variant;
tam:WORD; IP:IPINFO; ICMP:ICMPECHO; tamicmp:DWORD;
tempo:DWORD):DWORD;{$IFDEF WIN32} stdcall; {$ENDIF}
7. В Tbutton в событие Onclick вставляем следующий код:
procedure TForm1.Button1Click(Sender: TObject);
var
wsadt : wsadata;
icmp :icmpecho;
HNDicmp : integer;
hndFile :integer;
Host :PHostEnt;
Destino :in_addr;
Endereco :^DWORD;
IP : ipinfo;
Retorno :integer;
dwRetorno :DWORD;
x :integer;
IcmpCreateFile : TIcmpCreateFile;
IcmpCloseHandle : TIcmpCloseHandle;
IcmpSendEcho : TIcmpSendEcho;
begin
if (edit1.Text = '') then begin
Application.MessageBox('Enter a HostName ro a IP Adress',
'Error', MB_OK);
exit;
end;
HNDicmp := LoadLibrary('ICMP.DLL');
if (HNDicmp 0) then begin
@IcmpCreateFile := GetProcAddress(HNDicmp,'IcmpCreateFile');
@IcmpCloseHandle := GetProcAddress(HNDicmp,'IcmpCloseHandle');
@IcmpSendEcho := GetProcAddress(HNDicmp,'IcmpSendEcho');
if (@IcmpCreateFile=nil) or (@IcmpCloseHandle=nil) or
(@IcmpSendEcho=nil) then begin
Application.MessageBox('Error getting ICMP Adress','Error', MB_OK);
FreeLibrary(HNDicmp);
end;
end;
Retorno := WSAStartup($0101,wsadt);
if (Retorno 0) then begin
Application.MessageBox('Can?t Load WinSockets','WSAStartup', MB_OK);
WSACleanup();
FreeLibrary(HNDicmp);
end;
Destino.S_addr := inet_addr(Pchar(Edit1.text));
if (Destino.S_addr = 0) then begin
Host := GetHostbyName(PChar(Edit1.text));
end
else begin
Host := GetHostbyAddr(@Destino,sizeof(in_addr), AF_INET);
end;
if (host = nil) then begin
Application.MessageBox('Host not found','Error', MB_OK);
WSACleanup();
FreeLibrary(HNDicmp);
exit;
end;
memo1.Lines.Add('Pinging ' + Edit1.text);
Endereco := @Host.h_addr_list;
HNDFile := IcmpCreateFile();
for x:= 0 to 4 do begin
Ip.Ttl := char(255);
Ip.Tos := char(0);
Ip.IPFlags := char(0);
Ip.OptSize := char(0);
Ip.Options := nil;
dwRetorno := IcmpSendEcho(
HNDFile,
Endereco^,
null,
0,
Ip,
Icmp,
sizeof(Icmp),
DWORD(5000));
Destino.S_addr := icmp.source;
Memo1.Lines.Add('Ping ' + Edit1.text);
end;
IcmpCLoseHandle(HNDFile);
FreeLibrary(HNDicmp);
WSACleanup();
end;
У данного примера есть один недостаток - программа не воспримет доменное имя, только IP-адресс. Для пользователей NT не используйте функцию IcmpCloseHandle. Это всё.....
Ну и в конце полный исходный код примера:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
winsock, StdCtrls;
type
IPINFO = record
Ttl :char;
Tos :char;
IPFlags :char;
OptSize :char;
Options :^char;
end;
type
ICMPECHO = record
Source :longint;
Status :longint;
RTTime :longint;
DataSize:Shortint;
Reserved:Shortint;
pData :^variant;
i_ipinfo:IPINFO;
end;
TIcmpCreateFile =
function():integer; {$IFDEF WIN32} stdcall; {$ENDIF}
TIcmpCloseHandle =
procedure(var handle:integer);{$IFDEF WIN32} stdcall; {$ENDIF}
TIcmpSendEcho =
function(var handle:integer; endereco:DWORD; buffer:variant;
tam:WORD; IP:IPINFO; ICMP:ICMPECHO; tamicmp:DWORD;
tempo:DWORD):DWORD;{$IFDEF WIN32} stdcall; {$ENDIF}
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
wsadt : wsadata;
icmp :icmpecho;
HNDicmp : integer;
hndFile :integer;
Host :PHostEnt;
Destino :in_addr;
Endereco :^DWORD;
IP : ipinfo;
Retorno :integer;
dwRetorno :DWORD;
x :integer;
IcmpCreateFile : TIcmpCreateFile;
IcmpCloseHandle : TIcmpCloseHandle;
IcmpSendEcho : TIcmpSendEcho;
begin
if (edit1.Text = '') then begin
Application.MessageBox('Digite um HostName ou um End. IP',
'Error', MB_OK);
exit;
end;
HNDicmp := LoadLibrary('ICMP.DLL');
if (HNDicmp 0) then begin
@IcmpCreateFile := GetProcAddress(HNDicmp,'IcmpCreateFile');
@IcmpCloseHandle := GetProcAddress(HNDicmp,'IcmpCloseHandle');
@IcmpSendEcho := GetProcAddress(HNDicmp,'IcmpSendEcho');
if (@IcmpCreateFile=nil) or (@IcmpCloseHandle=nil) or
(@IcmpSendEcho=nil) then begin
Application.MessageBox('Erro pegando endereзos ICMP','Error', MB_OK);
FreeLibrary(HNDicmp);
end;
end;
Retorno := WSAStartup($0101,wsadt);
if (Retorno 0) then begin
Application.MessageBox('Nгo foi possнvel carregar WinSockets',
'WSAStartup',MB_OK);
WSACleanup();
FreeLibrary(HNDicmp);
end;
Destino.S_addr := inet_addr(Pchar(Edit1.text));
if (Destino.S_addr = 0) then begin
Host := GetHostbyName(PChar(Edit1.text));
end
else begin
Host := GetHostbyAddr(@Destino,sizeof(in_addr), AF_INET);
end;
if (host = nil) then begin
Application.MessageBox('Host nгo encontrado','Error', MB_OK);
WSACleanup();
FreeLibrary(HNDicmp);
exit;
end;
memo1.Lines.Add('Pinging ' + Edit1.text);
Endereco := @Host.h_addr_list;
HNDFile := IcmpCreateFile();
for x:= 0 to 4 do begin
Ip.Ttl := char(255);
Ip.Tos := char(0);
Ip.IPFlags := char(0);
Ip.OptSize := char(0);
Ip.Options := nil;
dwRetorno := IcmpSendEcho(
HNDFile,
Endereco^,
null,
0,
Ip,
Icmp,
sizeof(Icmp),
DWORD(5000));
Destino.S_addr := icmp.source;
Memo1.Lines.Add('Pingou ' + Edit1.text);
end;
IcmpCLoseHandle(HNDFile);
FreeLibrary(HNDicmp);
WSACleanup();
end;
end.
2023年10月25日 星期三
delphi ping scanner исходник интернет icmp. dll delphi ping интернет icmp. dll Русское программирование на Delphi. network
home automation distribution Electrical Distribution Board Wiring Diagram Aruduno Based Industrial PLC
Electrical Distribution Board Wiring Diagram
https://www.unipi.technology/products/family-house-automation-system-166
Family house automation system | Unipi
UniPi Axon Raspberry PI Based PLC
Aruduno Based Industrial PLC
ESP32 Industrial Controller with WIFI Digital 24V from NORVI Controllers on Tindie
IEC 61131-3: IL, FBD, LD, SFC, ST, CFC, powerful library management
home automation HACKDAY IO
Nextech | PLC- programovanie riadiacej jednotky UniPi Neuron v grafickom prostredí Node
https://www.kincony.com/2021/07/12
07/12/2021 - Smart Home Automation | KinCony
https://www.kincony.com/product/power-distribution-box
KC868-A8S ESP32 Ethernet RS485 Relay 4G GSM Development Board Switch MQTT HTTP ESPhome Home Assistant Tasmota DIY
KC868-AIO ESP32 All In One Board 58CH DI 32CH DO 16CH AO 19CH AI For Home Assistant By ESPHome
Smart Home Automation Module Controller System Switch Remote Power Circuit Breaker Distribution Box Board phase Cabinet
https://www.kincony.com/smart-electrical-distribution-panel-tuya-home-assistant-8ch.html
Home Automation Kits Electricity meter Distribution board Electrical Wires & Cable, electronics, electrical Wires Cable png
DIY home automation system: main controller board. Autonomous controller and a bridge between my other DIY
home automation controller relay
https://store.ncd.io/product/industrial-relay-controller-16-channel-spdt-uxp-expansion-port/
Industrial Relay Controller 16-Channel SPDT + UXP Expansion Port
smartDEN IP 16 Relay Web enabled Module with DIN Rail BOX
relay PID PRO DIN Rail Mount Relay DIN Rail Mounted Slim Relay Module SPDT
industrial relay PID PRO DIN Rail Mount Relay Module SPDT
The Basics of Control Relays | Relay Control Systems | Textbook
high quality Single Pole Double Throw Relay(SPDT).
DPDT stands for double-pole double-throw relay
din rail mount
GEYA 4 Channel Relay Module 1 SPDT DIN Rail Mount 5V 12V 24V DC/AC
Interface Relay Module for PLC GEYA 4 Channel Relay Module 1 SPDT DIN
Rail Mount 12V 24V DC/AC Interface Relay Module
industrial relay controller din rail mount Industrial Controller surge protection
PHOENIX CONTACT TT-ST-M-EX(I)-24DC Surge Protector, Mains Surge Protector, 2 Pole, 10 kA, 30 VDC, DIN Rail
https://de.farnell.com/en-DE/phoenix-contact/tt-st-m-ex-i-24dc/surge-protect-10ka-30vdc-din-rail/dp/3285615
industrial vision systems framework Vision image processing software
https://www.opto-e.com/en/products/fabimage-lib-suite
https://www.adaptive-vision.com/en/software/library/
https://forums.ni.com/t5/Machine-Vision/IMAQ-imgPlotDC2/td-p/2142020
https://github.com/topics/machine-vision
https://www.svs-vistek.com/en/imaging-components/svs-machine-vision.php?t=software
https://www.advantech.com/en/products/intelligent-vision-camera-software/sub_video_acquisition_and_encoding
https://www.pepperl-fuchs.com/global/en/classid_1928.htm
Vision System | Industrial Vision Systems, Image Processing | See Overview
https://www.teledynedalsa.com/en/products/imaging/vision-software/
https://en.wikipedia.org/wiki/Industrial_process_imaging
https://www.vision-systems.com/
http://net.bangong.cn:8806/content/details67_628.html
https://www.mdpi.com/2076-3417/12/22/11565/html
Applied Sciences | Free Full-Text | A Machine Vision Development Framework for Product Appearance Quality Inspection
https://viso.ai/computer-vision/the-most-popular-computer-vision-tools/
2023年10月24日 星期二
blender3d geometrynodes b3d now animate logos images Reaction Diffusion with Simulation Nodes Reaction Diffusion Resources 3D models Materials Dev Tools Blender
https://blendermarket.com/products/ird-gn
Instant Reaction Diffusion - Geometry Nodes Procedural Organic patterns generator - Blender Market
blender3d geometrynodes b3d now animate logos images Reaction Diffusion with Simulation Nodes mesh with the Reaction diffusion generator in real-time! Control sim details keyframe everything easily. More demo scenes soon. Gumroad & Blendermarket will be updated tomorrow
Reaction Diffusion with Simulation Nodes - Blender 3.6
Reaction Diffusion with Simulation Nodes Blender 3.6+ Geometry Nodes Reaction Diffusion Solver
https://blender.stackexchange.com/questions/220498/how-to-generate-reaction-diffusion-animation
Seven Experiments in Procedural Animation
https://www.karlsims.com/seven.html
Experiments in Procedural Animation Seven Experiments in Procedural AnimationZephyr www.zephyr-soft.net Zephyr is a small real-time operating system RTOS
https://en.wikipedia.org/wiki/Zephyr_%28operating_system%29
https://github.com/d-mozulyov/Tiny.Library
https://se.ewi.tudelft.nl/desosa2019/chapters/zephyr/
https://slowbootkernelhacks.blogspot.com/2020/11/zephyr-rtos-project.html
Python 3: Script interpreter and packages
CMake/Ninja/Make: Build system
Device Tree Compiler: Compiles device tree hardware descriptions
Toolchain: gcc for Arm, RISC-V, x86, etc.
Debug/Flash Tools: J-Link, pyOCD, OpenOCD, etc.
West: Custom tool for repository management, build/flash/debug assistance, and image signing
Zephyr Git repositories: The source code!
github data structure and algorithm pascal generic algorithms and data structures for lazarus/free pascal
https://github.com/avk959/LGenerics
https://github.com/topics/multiset
https://github.com/topics/priority-queue?o=desc&s=updated&utf8=%E2%9C%93
https://github.com/topics/multimap?o=desc&s=forks
https://github.com/topics/pascal-library
https://github.com/Fr0sT-Brutal/awesome-pascal/blob/master/README.md
Collection of generic algorithms language:Pascal
https://github.com/search?q=delphi+algorithms++language%3AMarkdown&type=code&l=Markdown
Small-C is both a subset of the C programming language, suitable for resource-limited microcomputers and embedded systems, Cross Small-C implementation based microcomputers
https://en.wikipedia.org/wiki/Small-C
https://godbolt.org/
https://forum.community.tw/t/topic/65
https://www.renesas.com/us/en/software-tool/cc-compiler-package-superh-family#additional_details
"C/C++ Compiler Package for SuperH Family Software Component List (PDF | English, 日本語)".
https://dansanderson.com/mega65/
https://dansanderson.com/mega65/cross-development/
https://dansanderson.com/mega65/cross-development-2/
https://m65digest.substack.com/
https://m65digest.substack.com/p/cross-development-for-fun-and-profit https://files.mega65.org/html/main.php?id=4fc0ab25-e381-4a64-a43c-d1d338166a7c
https://files.mega65.org/html/main.php?id=8b189d0b-ea1e-45a7-a4de-87bcb0b11696
https://files.mega65.org/html/main.php?id=3ef45802-446a-4325-bcc2-b387f818b33c https://www.forth.com/forth/
https://github.com/ptorric/figforth
https://github.com/timmoorhouse/mega65-forth
https://github.com/timmoorhouse/mega65-forth/wiki/Getting-Started
Python: The Best Image Processing Libraries OpenCV. Source OpenCV Scikit-Image. Source: sci-kit image SciPy. Source Scipy Pillow/PIL. PIL (Python Imaging Library NumPy Mahotas SimpleITK Pgmagick
https://en.wikipedia.org/wiki/Digital_image_processing
OpenCV. Source OpenCV
Scikit-Image. Source: sci-kit image
SciPy. Source Scipy
Pillow/PIL. PIL (Python Imaging Library
NumPy Mahotas SimpleITK Pgmagick
10-best-image-processing-libraries-in-python
neural-enhance pillow Tech Vetting skill assessments in seconds! thumbor python-qrcode
scikit-image OpenCV MATLAB SciPy Cloudinary FFMPEG
https://python.libhunt.com/compare-thumbor-vs-neural-enhance
https://python.libhunt.com/neural-enhance-alternatives
https://github.com/alexjc/neural-enhance
neural-enhance pillow thumbor python-qrcode scikit-image OpenCV MATLAB SciPy Cloudinary FFMPEG
https://scikit-image.org/
https://sharky93.github.io/docs/gallery/auto_examples/plot_canny.html
https://en.wikipedia.org/wiki/Scikit-image
Image Processing Libraries scikit-image github awesome
https://github.com/vinta/awesome-python
https://github.com/krzjoa/awesome-python-data-science
https://github.com/vinta/awesome image processing
image measurement Bias Ratio opencv vision measurement Otsu GaussianBlur threshold matplotlib pyplot subplot imshow threshold Canny Edge Detection
image measurement Bias Ratio opencv vision measurement
Otsu GaussianBlur threshold matplotlib pyplot subplot imshow threshold
Canny Edge Detection
OpenCV Otsu’s Binarization thresholding bias evaluated carrying opencv Otsu’s binarization bimodal Thresholding algorithm Otsu’s binarization
https://stackoverflow.com/questions/68177046/opencv-threshold-otsu-with-threshold-binary-logic
https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html
https://stackoverflow.com/questions/36172913/opencv-depth-map-from-uncalibrated-stereo-system
http://aishelf.org/yolo-opencv/
YOLO Darknet OpenCV Non Maxima Suppression (NMS) Reduce detected classes
http://aishelf.org/yolo/
YOLO (Part 1) Introduction with Darknet
Object detection principle YOLO preparation
https://github.com/AlexeyAB/darknet
http://aishelf.org/tag/colaboratory/
https://pyimagesearch.com/2016/03/28/measuring-size-of-objects-in-an-image-with-opencv/
https://roboflow.com/?ref=pyimagesearch
https://universe.roboflow.com/pyimagesearch?ref=pyimagesearch
https://pyimagesearch.com/2016/03/21/ordering-coordinates-clockwise-with-python-and-opencv/
https://pyimagesearch.com/2015/05/04/target-acquired-finding-targets-in-drone-and-quadcopter-video-streams-using-python-and-opencv/
https://pyimagesearch.com/2021/05/12/opencv-edge-detection-cv2-canny/
https://pyimagesearch.com/2016/03/28/measuring-size-of-objects-in-an-image-with-opencv/
https://pysource.com/2021/05/28/measure-size-of-an-object-with-opencv-aruco-marker-and-python/
https://forum.opencv.org/t/getoptimalnewcameramatrix-aspect-ratio-distortion/10258
calibration binocular vision measurement OpenCV center Principal Point calibration matrix
https://stackoverflow.com/questions/65583554/python-opencv-calibratecamera-returning-camera-matrix-but-it-is-nonsensical
https://docs.opencv.org/3.4/d9/d0c/group__calib3d.html
https://www.edge-ai-vision.com/2012/08/building-machines-that-see-finding-edges-in-images/
https://docs.opencv.org/4.x/da/d5c/tutorial_canny_detector.html
https://www.semanticscholar.org/paper/A-stereo-vision-measurement-system-Based-on-OpenCV-Lu-Wang/a160652b7365e8b74735e98a9fef094f318f52fe
https://www.mdpi.com/2313-433X/4/6/74
J. Imaging | Free Full-Text | A Review of Supervised Edge Detection Evaluation Methods and an Objective Comparison of Filtering Gradient Computations Using Hysteresis Thresholds
https://www.researchgate.net/publication/339551773_A_Performance_Comparison_of_Edge_Detection_Techniques_for_Printed_and_Handwritten_Document_Images
https://www.mdpi.com/1424-8220/20/13/3649
Sensors | Free Full-Text | Design of an Edge-Detection CMOS Image Sensor with Built-in Mask Circuits
https://www.researchgate.net/figure/Figure-1-Canny-edge-detection-process_fig1_220753963
https://en.wikipedia.org/wiki/Edge_detection
[PDF] Lecture 5: Gradients and Edge Detection What Are Edges? Boundaries of objects Boundaries of Lighting Types of Edges (1D Profiles
Gradients and Edge Detection Boundaries of objects Boundaries
Transform Ridge detection
Hough transform
Hough transform Generalized Hough transform
Phase Stretch Transform (PST)
http://what-when-how.com/biomedical-image-analysis/detection-of-circles-and-ellipses-with-the-hough-transform-biomedical-image-analysis/
Line Detection with Hough Transform
Convolution § Applications
Edge-preserving filtering
Feature detection (computer vision) for other low-level feature detectors
Image derivative
Gabor filter
Image noise reduction
Kirsch operator for edge detection in the compass directions
Ridge detection for relations between edge detectors and ridge detectors
Log Gabor filter
Phase stretch transform
https://en.wikipedia.org/wiki/Category:Image_processing
https://en.wikipedia.org/wiki/Category:Edge_detection
https://en.wikipedia.org/wiki/Edge_detection
https://en.m.wikipedia.org/wiki/corner_detection
industrial Bias Ratio vision measurement Canny Edge Detection Edge-Detection Filters
industrial Ratio Canny Edge measurement
https://ietresearch.onlinelibrary.wiley.com/doi/full/10.1049/ipr2.12764
Geo‐information mapping improves Canny edge detection method - Lijun - 2023 - IET Image Processing - Wiley Online Library
https://link.springer.com/chapter/10.1007/978-3-031-23504-7_7
SATMeas - Object Detection and Measurement: Canny Edge Detection Algorithm | SpringerLink
https://consultglp.com/2019/10/19/what-is-bias-in-measurement/
bias evaluated carrying repeat analysis suitable containing amount analyte reference value calculated difference between average results reference value
https://towardsdatascience.com/overfitting-in-deep-learning-what-is-it-and-how-to-combat-it-9760d25ad05b
https://www.frontiersin.org/articles/10.3389/fnins.2021.676220/full
Frontiers | PupilEXT: Flexible Open-Source Platform for High-Resolution Pupillometry in Vision Research
https://www.meccanismocomplesso.org/en/opencv-python-the-otsus-binarization-for-thresholding/
OpenCV & Python – The Otsu’s Binarization for thresholding – Meccanismo Complesso
bias evaluated carrying opencv Otsu’s binarization bimodal Thresholding algorithm Otsu’s binarization
OpenCV 3 Image Thresholding and Segmentation
https://www.bogotobogo.com/python/OpenCV_Python/python_opencv3_Image_Global_Thresholding_Adaptive_Thresholding_Otsus_Binarization_Segmentations.php
corner detection discrete cosine transform improved canny edge detection algorithm dct deutsche nationalbibliothek canny-edge detection algorithm
https://www.codeproject.com/Articles/93642/Canny-Edge-Detection-in-C
Canny Edge Detection in C# - CodeProject
https://www.mdpi.com/2073-8994/12/11/1749
Symmetry | Free Full-Text | Adaptive Image Edge Extraction Based on Discrete Algorithm and Classical Canny Operator
2023年10月23日 星期一
gutenberg 古騰堡計畫 「古騰堡計畫」利用文字轉語音技術發布5000本免費有聲讀物 Microsoft的AI為古騰堡計畫錄製 5,000 本有聲書!書籍是免費的,程式是開源的
https://gutenberg.org/
https://techcrunch.com/2023/09/19/project-gutenberg-puts-5000-audiobooks-online-for-free-using-synthetic-speech/
https://microsoft.github.io/SynapseML/docs/Explore%20Algorithms/AI%20Services/Quickstart%20-%20Create%20Audiobooks/
https://zh.wikipedia.org/wiki/%E5%8F%A4%E8%85%BE%E5%A0%A1%E8%AE%A1%E5%88%92
https://drs.ksml.edu.tw/digital.aspx?id=363
https://search.tphcc.gov.tw/ERS/db_details.cfm?OPTION=language&NLANGUAGEID=2&rscID=187
https://www.techbang.com/posts/110509-microsoft-ai-project-gutenberg
https://www.techbang.com/posts/109776-gutenberg-text-to-speech-audiobooks
This is a cross-reference of the ReactOS source code produced using the excellent Doxygen package. It is refreshed on a daily basis.
https://doxygen.reactos.org/index.html
https://github.com/exajobs/os-collection
handwriting writing blurry fuzzy jagged algorithm Polynomial Bezier fuzzy curve tracing Defuzzify offline handwriting signature
Off-line signature verification using elementary combinations of directional codes from boundary pixels
Off-line handwritten signature verification with inflections feature
Xiufen Ye, Weiping Hou, Weixing Feng
Published in IEEE International Conference… 29 July 2005
Computer Science IEEE International Conference Mechatronics and Automation, 2005
The training algorithm of the signature verification system and the verification method of the signatures are introduced and Experimental results verify the effectiveness of this method.
handwriting writing jagged algorithm Polynomial Bezier fuzzy cursive tracing transforms over
transforms
https://www.sciencedirect.com/science/article/abs/pii/S0031320311003943
Binary segmentation algorithm for English cursive handwriting recognition
Cursive Overlapped Character Segmentation: An Enhanced Approach
https://arxiv.org/ftp/arxiv/papers/1904/1904.00792.pdf
handwriting algorithm cursive tracing transforms Vector graphics path simplification algorithm
[PDF] Complex Handwriting Trajectory Recovery: Evaluation Metrics and Algorithm
Complex Handwriting Trajectory Recovery: Evaluation Metrics and Algorithm | SpringerLink
https://link.springer.com/chapter/10.1007/978-3-031-26284-5_4
handwriting-trajectory-recovery
https://github.com/skryzhanovskaya/pen_trace_reconstruction
Pen Trace Reconstruction with Skeleton Representation of a Handwritten Text Image?
A biologically inspired approach for recovering the trajectory of offline handwriting | SpringerLink
handwriting-trajectory-recovery simplify moving average A biologically inspired approach for recovering the trajectory of offline handwriting
(PDF) Stroke extraction and stroke sequence estimation for off-line signature verification
vector path simplify algorithm Paths transforms Average stroke algorithm
vector path simplify Optimize Simplify Path transforms algorithm
https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm
Ramer–Douglas–Peucker algorithm - Wikipedia
[PDF] Handwriting Trajectory Recovery using End-to-End Deep Encoder-Decoder Network
handwriting trajectory Relative simplify moving Transform approach trajectory
https://wicg.github.io/handwriting-recognition/
Handwriting Trajectory
Handwriting Trajectory path algorithm Polynomial cursive transforms
Handwriting Trajectory path algorithm Polynomial cursive transforms stroke skeleton line.
Complex Handwriting Trajectory Recovery: Evaluation Metrics and Algorithm | SpringerLink
github Handwriting Trajectory path algorithm Polynomial cursive Stroke transforms stroke skeleton line.
http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Paths-LivePathEffects.html
Trajectory path skeleton line algorithm Polynomial
Stroke predigest transforms
https://github.com/LingDong-/skeleton-tracing
https://www.semanticscholar.org/paper/Transcription-Methods-for-Trajectory-Optimization%3A-Kelly/0e36e16a09ede112a99370e8d669eb066a631bdc
[PDF] Polar Stroking: New Theory and Methods for Stroking Paths
Ramer–Douglas–Peucker algorithm Bézier curve
https://www.codeproject.com/Articles/1711/A-C-implementation-of-Douglas-Peucker-Line-Approxi
https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm
https://ilya.puchka.me/douglas-peucker-algorithm/
https://github.com/Ignotus-mago/DrawCurveByHand
Ramer-Douglas-Peucker and Reumann-Witkam line-simplification algorithms on C#
https://www.grasshopper3d.com/m/discussion?id=2985220%3ATopic%3A1454406
Ramer-Douglas-Peucker and Reumann-Witkam line-simplification algorithms on C# – Grasshopper
https://www.codeproject.com/Articles/114797/Polyline-Simplification
Table of Contents
Introduction
Similar Articles
Simplification algorithms
Nth Point
Radial distance
Perpendicular Distance
Reumann-Witkam
Opheim
Lang
Douglas-Peucker
Douglas-Peucker (Variant)
Error algorithms
Positional Errors
About the Code
About the Demo Application
Upcoming Versions
History
https://psimpl.sourceforge.net/douglas-peucker.html
The Douglas-Peucker Algorithm: Sufficiency Conditions for Non-Self-Intersections1
Polyline Variant of Douglas–Peucker Algorithm
https://github.com/AnnaMag/Line-simplification
https://www.codeproject.com/Articles/5306595/Smart-Decimation-Polyline-Simplification-and-Smoot
Douglas-Peucker algorithm
Visvalingam-Whyatt algorithm
Curvature-based simplification algorithm
Maximum Squared Distance algorithm
Reumann-Witkam algorithm
Opheim algorithm
Lang algorithm
Nth point
Distance between points
Perpendicular distance
https://algorithm-wiki.csail.mit.edu/wiki/Line_Simplification
https://algorithm-wiki.csail.mit.edu/wiki/Zhao-Saalfeld_(_Line_Simplification)
Ramer–Douglas–Peucker algorithm
Visvalingam–Whyatt
Reumann–Witkam
Opheim simplification
Lang simplification
Zhao-Saalfeld
Introduction - Projectbook General Graphical Apps
https://projectbook.code.brettchalupa.com/
Introduction - Projectbook
The Great Big List of Software Project Ideas
Projectbook is a collection of over 100 software project ideas for people looking to learn a given language or technology but short on inspiration for what to build. The projects vary in complexity and what they exercise. Find inspiration for your next project.
Dig In!
View the projects in the sidebar or browse through the sections below to find a project that catches your interest. Then hack away and make some cool things! Learn a lot. And share what you make.
CLIs
Libraries
Websites
Web Components
Web Apps
GUIs (platform agnostic, apps
https://m.prestwood.com/aspsuite/kb/crossref.asp?langid=2&tolangid=6&catid=&syntaxid=19
Code Blocks (Delphi and C# Cross Reference Guide)
objective reference guide libraries programming
https://dl.acm.org/doi/10.5555/2559601
Objective-C Programmer's Reference
https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html
https://projectbook.code.brettchalupa.com/general-graphical-apps/_introduction.html#general-graphical-apps
General Graphical Apps
Swift UI — for building apps for Apple devices
gtk — cross-platform desktop app toolkit with support for many language bindings
gtk-rs — Rust library for building cross-platform desktop GUIs with GTK4
Vala — a newer language for building apps with GTK
Flutter — cross-platform app building library in Dart from Google
React Native — build mobile apps using React components
Ionic — a mobile SDK that uses web components
Electron — build desktop apps using web technologies
Xamarin — cross-platform apps built with .NET and C#
Kotlin — Android development
Qt — cross-platform app toolkit, seems a bit enterprise-y
2023年10月22日 星期日
recursive Recursion delphi tree recursive Recursive Procedures Functions call delphi
https://stackoverflow.com/questions/18802327/how-to-copy-part-of-a-treeview-to-a-menu/18802680#18802680
https://stackoverflow.com/questions/18802327/how-to-copy-part-of-a-treeview-to-a-menu
https://www.marcocantu.com/ddh/ddh15/ddh15f.htm
https://delphisources.ru/pages/faq/master-delphi-7/content/LiB0209.html
https://stackoverflow.com/questions/18802327/how-to-copy-part-of-a-treeview-to-a-menu
http://delphiforfun.org/programs/delphi_Techniques/Recursion.htm
https://wiki.freepascal.org/Basic_Pascal_Tutorial/Chapter_4/Recursion
https://stackoverflow.com/questions/49479565/result-of-recursive-function-with-pascal
https://www.marcocantu.com/ddh/ddh15/ddh15f.htm
https://stackoverflow.com/questions/6946973/loop-over-files-in-a-directory-using-the-shell-in-delphi
https://www.viathinksoft.com/codelib/72
Recursively iterate files in a folder - Delphi CodeLib - ViaThinkSoft - intelligent software for everyone
http://www.festra.com/eng/snip04.htm
Delphi source code: Find files with FindFirst and FindNext
https://github.com/DenisAnisimov/decTreeView
some delphi Controls List Components List Hierarchical “Tree” list Controls vs Components List List of Delphi controls on a form – Tree hierarchy and flat list (VCL) – Scott Hollows – One Line At A Time
https://www.gesource.jp/weblog/?p=6325
JvInterpreterでDelphi/C++Builderアプリケーションに簡易Pascal言語を組み込む – 山本隆の開発日誌
https://scotthollows.com/2016/10/12/list-of-delphi-controls-on-a-form-hierarchical-and-flat-list-vcl/
List of Delphi controls on a form – Tree hierarchy and flat list (VCL) – Scott Hollows – One Line At A Time
https://scotthollows.com/2016/10/12/list-of-delphi-controls-on-a-form-tree-hierarchy-and-flat-list-firemonkey/
Controls List Components List Hierarchical “Tree” list Controls vs Components List
https://www.beginend.net/?feed=249
begin end - Scott Hollows Delphi
https://www.delphifeeds.com/
http://felix-colibri.com/papers/colibri_utilities/component_to_code/component_to_code.html
Felix Colibri- Component To Code
https://stackoverflow.com/questions/58853092/how-to-show-hide-non-visual-components-names
delphi - How to show/hide non-visual components names? - Stack Overflow
http://www.felix-colibri.com/papers/colibri_utilities/dfm_parser/dfm_parser.html
Felix Colibri- The .DFM Parser
https://stackoverflow.com/questions/40458858/recursive-procedure-for-getting-child-records-in-hierarchical-dataset
https://tscap32.sourceforge.net/
tscap32 Delphi Video Component
http://www.destructor.de/firebird/fbdelphi/index.htm
Firebird and Borland Delphi
https://forum.lazarus.freepascal.org/index.php?topic=20781.0
New component tab with graphic components like TArrow, TLed etc.
https://www.trisunsoft.com/visual-graph/getting-started/use-vg-component-activex-delphi.htm
Visual Graph Getting Started - Use ActiveX Control in Delphi 6
delphhi TJvFormStorage TJvAppStorage TJvFormPlacement Form Storage Form Placement save file TIniPropStorage Session Properties Loading a form from a package at runtime delphi
https://sourceforge.net/projects/jvcl/
Form's Properties property to save properties JvFormStorage SessionProperties
https://wiki.delphi-jedi.org/wiki/JVCL_Help:TJvFormStorage
TJvFormStorage
TJvFormStorage TJvAppStorage TJvFormPlacement
https://wiki.delphi-jedi.org/wiki/JVCL_Help:JVCL_Classes
https://stackoverflow.com/questions/68754386/delphi-tframe-how-to-save-and-load-component-properties
http://www.freepascal.ru/article/lazarus/20090429220000/
TForm.SessionProperties StoredValues TformPropertyStorage
TXMLPropStorage RootNodePath TIniPropStorage
https://lazarus-ccr.sourceforge.io/docs/lcl/jsonpropstorage/tjsonpropstorage.html
jsonpropstorage.pas line 49 type TJSONPropStorage
https://fossies.org/linux/lazarus/docs/chm/lcl.xct
"Fossies" Fresh Open Source "lazarus/docs/chm/lcl.xct" package /linux/misc/lazarus-2.2.6-0.tar.gz
https://www.delphipower.xyz/guide_4/manipulating_components_in_your_forms.html
http://www.freepascal.ru/article/lazarus/20090429220000/
https://stackoverflow.com/questions/27401684/loading-a-form-from-a-package-at-runtime
2023年10月21日 星期六
Elven breastplate pattern collection Cosplay larp patterns and guides Knight breastplate pattern collection PDF
https://www.etsy.com/shop/PretzlCosplay?ref=l2-about-shopname&listing_id=1054717688
https://www.etsy.com/shop/TrinesTreasury?ref=l2-about-shopname&listing_id=1441018140
cosplay Foam Pattern
Best Selling Collection of 5 x RARE Victorian COSTUME PATTERN Books ~ Lessons Patterns and Designs to print out and use Instant
ocal taxes included (where applicable)Bone Filigree Rubber Latex Ornate Harness Breastplate Chest piece Armour Gothic Faerie Dark Elf Baroque Fantasy Steampunk Ossuary
Armour Costume Women, Robot Costume Women, Halloween Costumes Women, Halloween Adult Costume, Halloween Costume, Womens Halloween Costumes
Silver Filigree Metallic Rubber Latex Ornate Harness Breastplate Chest piece Armour Gothic Faerie Elf Baroque Fantasy
java application manager deployment publish subscribe library
javaws jnlp
Instant Messenger Java Web Start
https://docs.oracle.com/javase/8/docs/technotes/guides/javaws/developersguide/syntax.html
https://docs.oracle.com/en/middleware/idm/identity-governance/12.2.1.3/omjav/oracle/iam/application/api/ApplicationManager.html
https://docs.oracle.com/cd/E19610-01/819-1490/CstAdm.html
javabean EJP
JCHEM IJC Manager
package com.adobe.idp.dsc.applicationmanager; JavaAPI SOAP AEM Forms
https://docs.oracle.com/cd/E14571_01/web.1111/e13712/pubsub.htm#WBAPP365
Using the HTTP Publish-Subscribe Server
https://netbeans.apache.org/kb/docs/java/javase-deploy.html
Packaging and Distributing Java Desktop Applications
Apt Package Manager Synaptic
Debian-based Linux Distributions
application manager linux Software Manager
https://en.wikipedia.org/wiki/Synaptic_(software)
https://en.wikipedia.org/wiki/Package_manager
docker mvn Java Gradle Maven Npm Maven
java Package manager
https://devopedia.org/package-manager
https://github.com/thevpc/nuts
https://developer.dynamobim.org/05-Package-Deployment/5-0-package-deployment.html
java application manager Package manager deployment publish library
https://docs.oracle.com/cd/e19610-01/819-1490/cstadm.html#wp444411
https://en.wikipedia.org/wiki/Java_class_file
linkage pendulum Pendulum Problem Simulate Motion
Stabilization Inverted Pendulum
Four-Bar Parallel Linkage Pendulum
https://www.researchgate.net/figure/Comparison-of-pendulum-movement-range-between-one-pendulum-system-and-hybrid-pendulum_fig5_273179210
Comparison of pendulum movement range between one-pendulum system and... | Download Scientific Diagram
https://olgaritme.com/posts/double-pendulum-using-lagrangian-mechanics/index.html
https://en.wikipedia.org/wiki/Double_pendulum
https://olgaritme.com/posts/double-pendulum-using-lagrangian-mechanics/index.html
double pendulum using lagrangian mechanics
https://www.semanticscholar.org/paper/Non-linear-swing-up-and-stabilizing-control-of-an-Bugeja/60b40d702b7a249d946e43eccdf6e4a5798a8fd4
[PDF] Non-linear swing-up and stabilizing control of an inverted pendulum system | Semantic Scholar
Simulating a Pendulum | ScienceBlogs
https://phet.colorado.edu/en/simulations/pendulum-lab
https://iwant2study.org/ospsg/index.php/interactive-resources/physics/02-newtonian-mechanics/02-dynamics/454-e-double-pendulum-drivenwee
MATLAB Animation Tutorial - Four-Bar Linkage Mechanism(Codes in Description)
Motion animation using Matlab: An approximate straight-line four-bar linkage
https://www.physicsforums.com/threads/four-bar-parallel-linkage-pendulum.1014688/
https://qintech.wordpress.com/matlab/puzzling-physics-problems/spring-pendulum/
Puzzling Physics Problems Spring Pendulum
Common Problems Situations Involving Energy Conservation Elastic Collisions
200 Puzzling Physics Problems Library of Congress (.gov) catdir.loc.gov catdir cam034 200 Puzzling Physics Problems / P. Gnädig, G. Honyek A simple pendulum and a homogeneous rod pivoted at its end are released from horizontal positions.
300 CREATIVE PHYSICS PROBLEMS with Solutions physicsgg pendulum, whose cord makes an angle 45° with the vertical is released. Where will the bob reach its minimum acceleration? Problem 23. Two blocks, each of mass
myPhysicsLab Simple Pendulum
myPhysicsLab
https://www.myphysicslab.com › pendul...
Puzzles. Try using the graph and changing parameters like mass, length, gravity ... There is yet a third way to derive the equations of motion for the pendulum.
https://www.researchgate.net/publication/285143816_Dynamics_of_multiple_pendula_without_gravity
Mathematics | Free Full-Text | Impact of a Multiple Pendulum with a Non-Linear Contact Force
Actuators | Free Full-Text | Equivalent Rope Length-Based Trajectory Planning for Double Pendulum Bridge Cranes with Distributed Mass Payloads
linkage simulate motion Equations Compound Pendulum Using Lagrange's Equations
linkage simulation motion Equations Compound Pendulum Equations
https://blogs.mathworks.com/simulink/2009/02/26/modeling-mechanical-systems-the-double-pendulum/
mechanical linkage graph mechanism structure kinematic chain
https://en.wikipedia.org/wiki/Linkage_(mechanical)