Delphi-PRAXiS
Seite 9 von 9   « Erste     789   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Delphi MySQL ohne Komponenten (https://www.delphipraxis.net/6543-mysql-ohne-komponenten.html)

gsh 19. Feb 2010 00:10

Re: MySQL ohne Komponenten
 
Delphi-Quellcode:
query :='INSERT INTO buch (Kartei, Autor, Titel, Genre, ISBN) VALUES (''1'','''+a+''',''1'',''1'',''1'')';

DeddyH 19. Feb 2010 08:10

Re: MySQL ohne Komponenten
 
Oder
Delphi-Quellcode:
query := Format('INSERT INTO buch (Kartei, Autor, Titel, Genre, ISBN) VALUES (%s, %s, %s, %s, %s)',[QuotedStr('1'), QuotedStr(a), QuotedStr('1'), QuotedStr('1'), QuotedStr('1')]);

citybreaker 28. Apr 2010 07:09

Re: MySQL ohne Komponenten
 
Kann diese Unit eigentlich auch mit Lazarus benutzt werden? :D

Musste meinen Rechner platt machen und habe nun keine Lizenzdatei mehr für
mein Delphi 2005 PE.

himitsu 28. Apr 2010 07:17

Re: MySQL ohne Komponenten
 
Zitat:

Zitat von citybreaker
Musste meinen Rechner platt machen und habe nun keine Lizenzdatei mehr für
mein Delphi 2005 PE.

Melde dich bei Embarcadero in deinem Account da an und schau nach deiner Lizenz.


www.embarcadero.com > oben auf "EDN" klicken > anmelden > oben auf "Mein Konto" > eventuell nochmal anmelden > und dann findest du links unter "Meine registrierten Produkte" deine Lizenzdaten
(um dein Delphi nutzen zu können mußtest du dich da ja mal registrieren und das Delphi freischalten und somit haben die auch deine Lizenzen)


Zitat:

Zitat von citybreaker
Kann diese Unit eigentlich auch mit Lazarus benutzt werden? :D

Versuch es doch einfach mal.

[edit]
Könnte mal bitte jemand die Header-Datei in den ersten Post einfügen?
Die neue DownloadURL ( http://www.jbprogramme.de/downloads/delphi/ ) existiert schonwieder nicht.

[edit2]
Es scheint garkeiner der Links aus Post #1 mehr zu gehn.

http://www.audio-data.de/mysql.html
(weiß allerdings nicht, ob es die selbe Unit ist)

citybreaker 28. Apr 2010 16:05

Re: MySQL ohne Komponenten
 
Juhu, habe nun endlich alles wieder installiert.

Irgendwie hab ich jetzt aber beim compelieren meiner Datenbank Anwendung ein kleines oder vll
auch großes(?!) Startproblem.


Delphi springt in die Unit mysql.pas und zweifelt folgende Zeile an.
Delphi-Quellcode:
{$INCLUDE *_win32.inc}
Zitat:

[Fataler Fehler] mysql.pas(4036): F1026 Datei nicht gefunden: 'mysql_win32.inc'
Hab ich die mal irgendwo vor ewigkeiten hinkopieren müssen?


--- Edit ---
Ohh ich doof hab den falschen Pfad zur Bibliothek hinzugefügt. :oops: :lol:

himitsu 28. Apr 2010 16:21

Re: MySQL ohne Komponenten
 
eigentlich muß die im selben Verzeichnis liegen, wie die mysql.pas

Bonimahoni 22. Jul 2010 06:48

AW: MySQL ohne Komponenten
 
Servus,

ich bin ganz neu bei Delphi und hätte da wegen einer Datenbankverbindung eine Frage. Ich habe mir den Quelltext von hier kopiert.

Zur Info:

Benutze Turbo Delphi aus Borland Studio 2006
libmysql.dll liegt in System / System32 / Projektverzeichnis
Version ist 5.1.41.0 direkt aus XAMPP rauskopiert
Die mysql.pas und mysql_win32.inc sind im Projektverzeichnis

Quelltext:

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TFrame1 = class(TFrame)
 private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;


var
  _myCon: PMySQL; //unseren Verbindungsdeskriptor
  host, user, pass, db: PChar; //die Anmeldedaten

implementation

{$R *.dfm}



begin
  //wir werden uns als Root-Benutzer in localhost einloggen, ohne eine
  //bestimmte Datenbank auszuwählen
  host := 'localhost';
  user := 'root';
  pass := nil;
  db := 'hallo';

  //jetzt wird _myCon initialisiert
  _myCon := mysql_init(nil);
  if _myCon = nil then
  begin
    ShowMessage('Nicht genug freier Speicher, um Verbindungsdeskriptor zu initialisieren');
    Exit;
  end;

  //anschließend wird die Verbindung hergestellt
  if mysql_real_connect(_myCon, host, user, pass, db, 3306, nil, 0) = nil then
  begin
    ShowMessage('Die Verbindung konnte nicht hergestellt werden. Ursache: ' + mysql_error(_myCon));
    Exit;
  end;

  ShowMessage('Verbindung hergestellt');

  //zum Schluss wird die Verbindung wieder geschlossen
  mysql_close(_myCon);



end.
jetzt kommt beim kompilieren folgende fehlermeldung:

Im Project1.exe ist eine Exception der Klasse Exception mit der Meldung 'MySQL: libmysql not loaded' aufgetreten.

Weiß jemand ne Lösung dazu? Im Voraus schonmal vielen Dank!

himitsu 22. Jul 2010 07:16

AW: MySQL ohne Komponenten
 
Und an welcher Stelle tritt dieser Fehler auf?


Delphi-Quellcode:
//wir werden uns als Root-Benutzer in localhost einloggen, ohne eine
//bestimmte Datenbank auszuwählen
host := 'localhost';
user := 'root';
pass := nil;
db := 'hallo';
Diesen Teil hast du auch angepaßt?

Bonimahoni 22. Jul 2010 07:37

AW: MySQL ohne Komponenten
 
Fehler tritt hier auf:

Delphi-Quellcode:
_myCon := mysql_init(nil);
Im Ereignisprotokoll steht:
Erste Gelegenheit für Exception bei $7C812A6B. Exception-Klasse Exception mit Meldung 'MySQL: libmysql not loaded'. Prozess Project1.exe (6084)

Ja das habe ich angepasst. Der mySQL Server läuft über XAMPP auf meinem Rechner. Ok bei User steht "root@localhost" aber das zu ändern bringt nichts.


Wenn ich den Fehler ignoriere kommt als nächstes ein popup mit dieser meldung:

Runtime Error 217 at 0045a9d0

Im Ereignisprotokoll steht:
Modul laden: MSLBUI.dll. Ohne Debug-Infos. Basisadresse: $605D0000. Prozess Project1.exe (5284)

himitsu 22. Jul 2010 07:50

AW: MySQL ohne Komponenten
 
Hmmm, hab mal genau reingesehn, also die Unit/Header aus dem Beitrag vom "28. Apr 2010, 08:17" sind anscheinend für MySQL 3.x ... demnach könnte es schon stimmen, daß die benötigten/benutzten APIs in der DLL nicht gefunden werden.
Das war allerdings auch der einzige Heder, welchen ich mal fand (viele Links hier im Thread sind ja leider tot)

Bonimahoni 22. Jul 2010 08:14

AW: MySQL ohne Komponenten
 
Ich hab die Datei von hier:

http://www.audio-data.de/mysql.html

Und da steht das diese vom (Version 2009-09-13) ist also dürfte das doch keine probleme aufwerfen :(

Kann es sein das Turbo Delphi 2006 einfach nicht will?

himitsu 22. Jul 2010 08:22

AW: MySQL ohne Komponenten
 
Ja, und schau aber auch mal in die mysql.pas rein.

Diese Unit wurde zwar aktualisiert, damit sie bis Delph 2010 läuft, allerdings wurde nur die Unit an Delphi, aber nicht an MySQL angepaßt, denn da ist sie (und anscheinend auch viele andere C++-Header) bei MySQL 3.1 stehengeblieben.
(selbst der auf mysql.com unter MySQL 5.x verlinkte C++-Header ist nur für MySQL 3.1 :wall: )

Bonimahoni 22. Jul 2010 16:25

AW: MySQL ohne Komponenten
 
:(

Ok dann muss ich es wohl aufgeben. Bin Programmieranfänger und hab so schon kaum Ahnung und dann noch in so ner komplizierten Datei rumwerkeln wird nichts.

Vielleicht gibt es ja jemand der das mal auf 5.1 aktualisiert oder ich such mir irgendwo her Delphi2010 da ist das ja schon integriert.

himitsu 22. Jul 2010 16:28

AW: MySQL ohne Komponenten
 
Du kannst ja immernoch eine MySQL-3.x-DLL verwenden.
Aber wenn du mal die MySQL-5.x-Header-Dateien findest (z.B. in C++ eine mysql.h oder Ähnlich), dann kannst du dich gerne melden und wir helfen beim Übersetzen.

Bonimahoni 23. Jul 2010 09:14

AW: MySQL ohne Komponenten
 
Mit ner 3.1 dll geht aber der zugriff auf den 5.1 Server nicht oder?

Ich such mal bisl rum übers WE. Danke für deine Hilfe

mkinzler 23. Jul 2010 09:29

AW: MySQL ohne Komponenten
 
Standardmässig nicht. es gibt m.W. aber eine Einstellung am Server, welche die alte Zugriffsmethode ermöglicht

himitsu 29. Jul 2010 11:12

AW: MySQL ohne Komponenten
 
Grade gesehn, die Erwähnung auf MySQL 4.0 5.0 5.1 stehen etwas versteckter im ChangeLog (bis 3.x hatte man das noch recht offensichtlich erwähnt).

Also müßte man doch nochmal nachsehn, warum da nun dieser Fehler auftritt.

Bonimahoni 29. Jul 2010 15:24

AW: MySQL ohne Komponenten
 
Ich schreib gerade den Rest meiner BA fertig und habe deshalb gerade wenig Zeit dafür.
Werde mich in zwei bis drei Wochen nochmal genauer damit beschäftigen. Will unbedingt raus finden warum der Dreck nicht geht... -.-

himitsu 30. Jul 2010 18:25

AW: MySQL ohne Komponenten
 
Also, ich versuch es selber grade mal und bekomme mit meinen eigenen Headern ebenfalls einen Fehler raus.

Zitat:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt _MySQLp.exe ist eine Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 1035600B in Modul 'libmysql.dll'. Lesen von Adresse 00000004' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------
mir Debuginfos:
Zitat:

---------------------------
Microsoft Visual C++ Runtime Library
---------------------------
Assertion failed!

Program: ...
File: .\my_getopt.c
Line: 126

Expression: argc && *argc >= 1

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts

(Press Retry to debug the application - JIT must be enabled)
---------------------------
Abbrechen Wiederholen Ignorieren
---------------------------
Allerdings hab ich es mit der Embedded-Version versucht ... werd' mir aber demnächst mal einen MySQL-Server installieren
(wenn ich wieder daheim bin ... hier möchte ich das jetzt nicht drauf installieren)




hab hier mal einige libmysql.dll's zusammengestellt
diese sind direkt von mysql.com und Einige sind mit Debuginfos kompiliert wurden:
www.FNSE.de/DL/libmysql.7z (~13 MB)

Kannst es ja mal mit Einer davon versuchen.

himitsu 2. Aug 2010 20:46

AW: MySQL ohne Komponenten
 
versuch es mal so, also inklusive mysql_server_init und mysql_thread_init

PS: mysql_thread_init/mysql_thread_end muß in jeden Thread aufgerufen werden, wo man das MySQL nutzen will.
Delphi-Quellcode:
var
  sql: pmysql;
  args, groups: array[0..9] of PAnsiChar;

libmysql_load(nil);

groups[0] := nil;
mysql_server_init(0, @args, @groups);

mysql_thread_init;

sql := mysql_init(nil);
sql := mysql_real_connect(sql, 'localhost', 'root', 'FNSE1997', '', 3306, nil, 0);



mysql_close(sql);
mysql_thread_end;
libmysql_free;

nytaiceman 4. Aug 2010 21:23

AW: MySQL ohne Komponenten
 
Zitat:

Zitat von Bonimahoni (Beitrag 1036742)
Fehler tritt hier auf:

Im Ereignisprotokoll steht:
Erste Gelegenheit für Exception bei $7C812A6B. Exception-Klasse Exception mit Meldung 'MySQL: libmysql not loaded'. Prozess Project1.exe (6084)

Ich hatte dasselbe Problem weil auf der ersten Seite des sehr interessanten Tutorials folgende Codezeile leider fehlt:
Delphi-Quellcode:
var
  _myCon: PMySQL; //unseren Verbindungsdeskriptor
  host, user, pass, db: PChar; //die Anmeldedaten
begin
  //wir werden uns...
und als nächstes nun gleich ein
Delphi-Quellcode:
libmysql_load(nil);
einpflegen, dann klappt das Laden der .dll.

Also:
Delphi-Quellcode:
var
  _myCon: PMySQL; //unseren Verbindungsdeskriptor
  host, user, pass, db: PChar; //die Anmeldedaten
begin
 // = Load .dll
  libmysql_load(nil);
  //wir werden uns...

Das hat auch himitsu in seinem letzten Beispiel mitgegeben.(Als Thread verpackt)

Friday 6. Sep 2010 21:34

AW: MySQL ohne Komponenten
 
Das verbinden mit dem SQL Server funktioniert, allerdings bekomme ich jedes mal wenn ich eine query absende den Fehler "MySQL Server has gone away".
Ein Timeout kann es aber nicht sein, denn das passiert selbst wenn ich die query unmittelbar nach der Connection absetze.
Den Befehl mysql_close(_myCon); rufe ich allein in der FormClose Procedure auf, also daran kann es auch nicht liegen.

Kennt jemand das Problem? Bzw noch besser die Lösung.

ernschd 7. Sep 2010 10:03

AW: MySQL ohne Komponenten
 
Hast Du nach der Liste von hier schon alles geprüft?

Friday 7. Sep 2010 10:55

AW: MySQL ohne Komponenten
 
ja die Liste hatte ich mir auch schon angesehn. Hilft mir aber nicht wirklich weiter, da timeout, Datengröße (wenige Bytes) und query-Größe (ebenfalls wenige Bytes) alles auschließen kann.
Da ich php Seiten habe die auf die gleiche Datenbank ohne Probleme zugreifen, muss ich annehmen, dass es am Delphi-Programm liegt. Nur woran.
Ohne Code natürlich schwer zu diagnostizieren, den werde ich heute Abend nachreichen. Aber im Grunde habe ich mich genau an das Tutorial hier gehalten.

Friday 7. Sep 2010 20:43

AW: MySQL ohne Komponenten
 
so nun hier der Code der gleich zu Programmstart eine Verbindung aufbaut und versucht aus einer Tabelle zu lesen, aber mit der Meldung "MYSQL Server has gone away" scheitert:


Delphi-Quellcode:
type
  TForm1 = class(TForm)
    SG1: TStringGrid;
...
...
...
  private
    { Private-Deklarationen }
  public
    _myCon: PMySQL; //unseren Verbindungsdeskriptor
    host, user, pass, db: PAnsiChar; //die Anmeldedaten
    _myRes: PMySQL_Res; //hier wird der gesamte Ergebnissatz gespeichert
    _myRow: PMySQL_Row; //enthält den aktuellen Datensatz
    query: PChar;
    { Public-Deklarationen }
  end;
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
  host := 'myhost.webpack.hosteurope.de';
  user := 'MeMeMe';
  pass := 'myPass';
  db := 'myDB';
  //jetzt wird _myCon initialisiert
  libmysql_load(nil);
  _myCon := mysql_init(nil);
  mysql_real_connect(_myCon, host, user, pass, db, 3306, nil, 0);
  if _myCon = nil then
    showmessage('Verbindung konnte nicht hergestellt werden.');
  SG1.Cells[0, 0] := 'Report-Nr.';
  SG1.Cells[1, 0] := 'Überschrift';
  query := PChar('SELECT * FROM t_Projects ORDER BY id');
  mysql_real_query(_myCon, PAnsiChar(query), Length(query));
  _myRes := mysql_store_result(_myCon);
  if _myRes = nil then
    begin
      ShowMessage(mysql_error(_myCon));
      Exit;
    end;
  SG1.RowCount := mysql_num_rows(_myRes) + 2;
  for i := 0 to mysql_num_rows(form1._myRes) do
    begin
      _myRow := mysql_fetch_row(_myRes); //Datensatz abholen
      SG1.Cells[i, 0] := form1._myRow[0];
      SG1.Cells[i, 1] := form1._myRow[1];
    end;
  mysql_free_result(_myRes);
end;

ernschd 8. Sep 2010 15:29

AW: MySQL ohne Komponenten
 
Hab Deinen Code getestet, so weit ist er richtig und funktioniert. Das Problem liegt ganz offensichtlich an Deinem Datenbank-Server. Sehr oft verbieten die Webhoster den direkten Zugriff auf die Datenbank, so dass man nur über Webserver o.ä. zugreifen darf.

In der FAQ von HE steht nur, dass ein externen Zugriff per ODBC möglich ist.

Gruß

Progman 8. Sep 2010 18:49

AW: MySQL ohne Komponenten
 
Webhoster unterbinden Connects zu ihrem mySQL-Servern von außen.
Die Gründe liegen auf der Hand. Es wäre ein nicht zu unterschätzendes Sicherheitsrisiko.

Friday 8. Sep 2010 21:58

AW: MySQL ohne Komponenten
 
das erklärt es natürlich

danke für eure Mühe

bloss wenn es ein Sicherheitsrisiko ist, ist es das mit ODBC doch auch.

Dann werd ich mir wohl überlegen müssen ob ich das ganze Webseitenbasiert machen soll oder ODBC Komponenten für Delphi suchen soll.

ManuKILLED 24. Aug 2012 10:44

AW: MySQL ohne Komponenten
 
Hey Leute,

hab leider ein kleines Problem... muss dazu sagen, bin Delphi Anfänger.
Kriege bei Auführung des Scripts die Meldung "Zugriffsverletzung bei Adresse 004532DF in Modul 'Project1.exe'. Lesen von Adresse 00000004"

Die angeforderten Daten werden allerdings ausgegeben.

Hier mein Code:
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)

    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public

    _myCon: PMySQL; //unseren Verbindungsdeskriptor
    host, user, pass, db: PAnsiChar; //die Anmeldedaten
    _myRes: PMySQL_Res; //hier wird der gesamte Ergebnissatz gespeichert
    _myRow: PMySQL_Row; //enthält den aktuellen Datensatz
    query: PChar;
    { Public-Deklarationen }

  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
 var
 name: string;
 i: integer;

begin
  host := 'localhost';
  user := 'root';
  pass := nil;
  db := 'bestellwesen';
  //jetzt wird _myCon initialisiert
  libmysql_load(nil);
  _myCon := mysql_init(nil);
  mysql_real_connect(_myCon, host, user, pass, db, 3306, nil, 0);
  if _myCon = nil then
  begin
    showmessage('Verbindung konnte nicht hergestellt werden.');
    end;
    showmessage('OK');

  query := PChar('Select * FROM verkaufer WHERE id=1');
  mysql_real_query(_myCon, PAnsiChar(query), Length(query));
  _myRes := mysql_store_result(_myCon);


  for i := 0 to mysql_num_rows(Form1._myRes) do
    begin
      _myRow := mysql_fetch_row(_myRes); //Datensatz abholen
      name := form1._myRow[1]; // In dieser Zeile gibt der Compiler den Fehler an]
      showmessage(name); // Hier wird noch ein resultat ausgegeben, danach erfolgt der Fehler.
    end;
  mysql_free_result(_myRes);

end;

end.

mkinzler 24. Aug 2012 10:46

AW: MySQL ohne Komponenten
 
Was meint der Debugger?

DeddyH 24. Aug 2012 10:47

AW: MySQL ohne Komponenten
 
Wie ist es so (benannte Instanz form1 weggelassen und Indizes angepasst)?
Delphi-Quellcode:
for i := 0 to mysql_num_rows(_myRes) - 1 do
    begin
      _myRow := mysql_fetch_row(_myRes); //Datensatz abholen
      name := _myRow[i]; // In dieser Zeile gibt der Compiler den Fehler an]
      showmessage(name); // Hier wird noch ein resultat ausgegeben, danach erfolgt der Fehler.
    end;

ManuKILLED 24. Aug 2012 10:54

AW: MySQL ohne Komponenten
 
Zitat:

Zitat von DeddyH (Beitrag 1179698)
Wie ist es so (benannte Instanz form1 weggelassen und Indizes angepasst)?
Delphi-Quellcode:
for i := 0 to mysql_num_rows(_myRes) - 1 do
    begin
      _myRow := mysql_fetch_row(_myRes); //Datensatz abholen
      name := _myRow[i]; // In dieser Zeile gibt der Compiler den Fehler an]
      showmessage(name); // Hier wird noch ein resultat ausgegeben, danach erfolgt der Fehler.
    end;

Ich liebe Dich :)
Spaß bei Seite, klappt nun... super, vielen vielen Dank :)

dpy232 27. Okt 2012 16:50

AW: MySQL ohne Komponenten
 
Hallo,
ersteinmal vielen Tag für dieses klasse Tutorial. Ich habe versucht das Tutorial bei mir ans laufen zu bekommen. Leider bekomme ich beim Compilieren einen Fehler.
In der Funktion UpdateField() wird eine Procedure copyStr() bedingt erstellt, im Falle, dass man nicht einen x64 hat.
Delphi-Quellcode:
function UpdateField(f: PMYSQL_FIELD): TMYSQL_FIELD;
  {$IFNDEF CPUX64}
  procedure CopyStr(var dest: PAnsiChar; var DestLen: Cardinal; src: PAnsiChar);
  //eax: dest edx: DestLen ecx: src
  asm
Leider bleibt der compiler an der Stelle leider immer stehen. Und gibt folgende Meldung aus:
mysql.pas(1603,3) Fatal: Syntax error, "BEGIN" expected but "ASM" found

Nach meinen Recherchen müsste der Compiler eigentlich mit der Konstruktion keine Probleme haben und ich hab inzwichen auch keine Idee mehr, wie ich dieses Problem beheben soll/kann.
Vielleicht kann mir einer hier im Forum einen Tip geben, wie ich an der Stelle weiter komme.

Ich verwende Lazarus mit FreePascal 1.0.2 mit dem FreePascalCompier 2.6.0 unter WinXP auf einer virtuellen Maschine.

Schon einmal vielen Dank im Vorraus für hilfreiche Tips.

Danke, Oliver

himitsu 27. Okt 2012 18:13

AW: MySQL ohne Komponenten
 
Eventuell kann dein Compilier keine Assembler-Prozeduren an dieser Stelle behandeln?

OK, oder der Compilier läuft einfach in einem falschen Modus?
Irgendwie konnte man ihn ja in einen delphikompatiblen Modus umschalten.

Schuby 30. Mär 2020 10:01

AW: MySQL ohne Komponenten
 
Hallo,

ich lese mich gerade hier ein und hätte eine Frage.

Da ich keine localhost Datenbank habe, sondern meine liegt auf ein
Root Server im Internet, muss ich die MySql Datenbank dann Global frei
schalten, weil sonst werden die ja nur local angelegt.


Oder übergebt ihr die mysql_real_connect Befehle an eine php Datei ?


mfg


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:34 Uhr.
Seite 9 von 9   « Erste     789   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz