Da ich grad sowieso an dem Thema "Sockets" dran bin, und die Doku zu dem Thema ein Paradebeispiel dafür ist, wie übel es um das Thema Doku bestellt ist, fange ich mal mit irgendwas an. Ich brauche einen Anschubs wie das sauber zu machen wäre.
Bisher versuche ich parallel, vier Links zu Librarries auszuwerten (fcl-net, fpweb, lNet, Sockets). fcl-net und Sockets sind offenbar tot, lNet bewegt sich nicht mehr seit 2011, fpweb löst ein anderes Problem.
Thema: Socket-Programmierung plattformübergreifend Win/Mac/Linux. In der Doku (https://wiki.freepascal.org/fcl-net + Verweise dahin) findet sich eine Library fcl-net, die eine Unit fpAsync zur Verfügung stellen soll. Die Unit existiert bei mir weder unter Linux noch unter Windows. Es fliegt aber noch ein Haufen gut aussehender Sample-Code durchs Netz, der aber nicht compiliert. Folgt man diesem Hinweis https://forum.lazarus.freepascal.org/in ... ic=30974.0 wurde fcl-net möglicherweise irgendwann um 2010 herum aufgegeben, wobei die Wiki Doku noch Änderungen bis ca. 2015 listet.
Ich würde nun diese Info gerne verifizieren. Ich möchte das Entfernen sicherheitshalber im Source-Repository nachvollziehen. Ich hab jetzt erfolglos die Sourcen des Verzeichnisses "Componets" aller Releases von 2005 bis 2012 manuell durchgesehen, aber nirgends eine Spur von der Geister-Library gefunden. Da muss es doch im Jahr 2021 und angesichts dessen dass das Projekt unter Source-Control steht, eine effizientere Möglichkeit geben. Hat Sourceforge keine Möglichkeit, in der Commit-Historie zu suchen?
Thnx, Armin.
[Gelöst] Umgang mit FCL-Packages (WAS: Verbesserung Dokumentation/Wiki)
[Gelöst] Umgang mit FCL-Packages (WAS: Verbesserung Dokumentation/Wiki)
Zuletzt geändert von Nimral am Do 16. Dez 2021, 08:03, insgesamt 2-mal geändert.
Re: Verbesserung Dokumentation/Wiki (WAS: Make...)
Das folgende habe ich unter Windows gemacht (geht natürlich entsprechend auch unter Linux)Nimral hat geschrieben: Mi 1. Dez 2021, 12:02 Thema: Socket-Programmierung plattformübergreifend Win/Max/Linux. In der Doku (https://wiki.freepascal.org/fcl-net + Verweise dahin) findet sich eine Library fcl-net, die eine Unit fpAsync zur Verfügung stellen soll. Die Unit existiert bei mir weder unter Linux noch unter Windows. Es fliegt aber noch ein Haufen gut aussehender Sample-Code durchs Netz, der aber nicht compiliert. Folgt man diesem Hinweis https://forum.lazarus.freepascal.org/in ... ic=30974.0 wurde fcl-net möglicherweise irgendwann um 2010 herum aufgegeben, wobei die Wiki Doku noch Änderungen bis ca. 2015 listet.
- Alle Libs mit Namen fcl-* gehören zu FPC. Ich gehe im Explorer ins Verzeichnis der aktuellen fpc-main Installation (es geht aber sicher auch mit einer halbwegs aktuellen Lazarus oder fpc-Installation) und suche nach "fcl-net" (ja, man kann mit dem Explorer nach Dateien suchen...). Es werden einige Einträge gefunden, der aussichtsreichste ist (fpc-dir)\packages\fcl-net. Hätte man sich denken können... Allerdings gibt es dort keine Datei die nach fpasync aussieht.
- Also im Explorer zurück ins FPC-Installationsverzeichnis. Nun nach "fpasync" suchen. Das wird tatsächlich gefunden (fpasync.pp), aber im Ordner (fpc-dir)\packages\fcl-async\src.
- Um zu erfahren, was mit der Datei geschehen ist: Rechtsklick auf der gefundenen Datei, "TortoiseGit" > "Git show log". Es kommt nur ein Eintrag, "created fcl-async and fcl-process packages" vom 28.10.2007; in der Dateiliste steht noch "(from packages/fpc-base/inc/fpasync.pp)". Das heißt, dass die Datei wahrscheinlich früher im fcl-base Ordner war, von fcl-net ist nicht die Rede.
Re: Verbesserung Dokumentation/Wiki (WAS: Make...)
Mach ich gerne, aber es fehlt mir noch ein Baustein: wie finde und installiere ich ein Package, das fcl-async oder fpAsync enthält? Eine lpk konnte ich erst mal nicht finden. Auch der Package Manager weiß von nichts. Dafür gibt es in der Source ein fpmake.pp file, das wierderum zu einem fpmake system zu gehören scheint, für das Lazarus keine Unterstützung hat? Wie ist das gedacht mit dem inhalt von fpc\....\source\packages, wie verwendet man das was dort liegt?wp_xyz hat geschrieben: Mi 1. Dez 2021, 14:22 Also: Die Datei existiert, aber im Ordner fcl-async. Wo das im wiki falsch steht, habe ich nicht nachvollzogen. "Jemand" sollte das ggfs. .ändern
Armin.
Re: Verbesserung Dokumentation/Wiki (WAS: Make...)
FPC und Lazarus sind unterschiedliche Produkte und haben unterschiedliche Package-Systeme. Wenn du unter "Components" (gemeint ist: Lazarus/components) suchst, dann suchst du Lazarus-Packages. Auch der OPM gehört zu Lazarus, arbeitet also mit Lazarus Packages.
Die FPC-Packages stehen in der Regel im Ordner packages der FPC-Installation und sind gewöhnlich in der "FCL" (= Free Pascal Component Library) automatisch installiert. Das heißt, du musst bei den üblichen Projekt-Templates nur die entsprechende Unit in die uses-Anweisung aufnehmen, und los geht's. (Schlimmstenfalls musst du noch FCL zu den Anforderungen des Projekts hinzufügen). Einige wenige Packages sind nicht mit dabei, wahrscheinlich weil sie nicht unter den wichtigsten Plattformen funktionieren. fcl-async scheint eins davon zu sein.
Da diese Packages nirgendwo in der FLC noch in der LCL gebraucht werden, würde ich einfach das src-Verzeichnis des entsprechenden FCL-Packages in mein Projekt kopieren und den Unit-Pfad ggfs. erweitern (du kannst es auch an Ort und Stelle lassen und nur den Unit-Pfad erweitern, aber damit wäre dein Projekt auf eine feste Ordner-Struktur festgenagelt - das fällt dir irgendwann auf die Füße).
Alternativ - aber das habe ich noch nie ausprobiert - kann man auch versuchen, das Package in die FCL zu installieren. Das ist auf dieser Seite dokumentiert: https://fppkg.cnoc.nl/documentation
Die FPC-Packages stehen in der Regel im Ordner packages der FPC-Installation und sind gewöhnlich in der "FCL" (= Free Pascal Component Library) automatisch installiert. Das heißt, du musst bei den üblichen Projekt-Templates nur die entsprechende Unit in die uses-Anweisung aufnehmen, und los geht's. (Schlimmstenfalls musst du noch FCL zu den Anforderungen des Projekts hinzufügen). Einige wenige Packages sind nicht mit dabei, wahrscheinlich weil sie nicht unter den wichtigsten Plattformen funktionieren. fcl-async scheint eins davon zu sein.
Da diese Packages nirgendwo in der FLC noch in der LCL gebraucht werden, würde ich einfach das src-Verzeichnis des entsprechenden FCL-Packages in mein Projekt kopieren und den Unit-Pfad ggfs. erweitern (du kannst es auch an Ort und Stelle lassen und nur den Unit-Pfad erweitern, aber damit wäre dein Projekt auf eine feste Ordner-Struktur festgenagelt - das fällt dir irgendwann auf die Füße).
Alternativ - aber das habe ich noch nie ausprobiert - kann man auch versuchen, das Package in die FCL zu installieren. Das ist auf dieser Seite dokumentiert: https://fppkg.cnoc.nl/documentation
- af0815
- Lazarusforum e. V.
- Beiträge: 6787
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Verbesserung Dokumentation/Wiki (WAS: Make...)
Schau mal in die \fpcsrc\packages\fcl-async\fpmake.pp
Da sieht man IMHO an "P.OSes:=AllUnixOses;" das es nur für Unixes ist. Zum Beispiel im fcl-image\fpmake steht dort "P.OSes := P.OSes - [embedded,nativent,msdos,win16,macosclassic,palmos];". Daran sieht man, das das für alle Betriebssystem ist, bis auf die aufgezählten. Wenn man weis nach was man sucht, geht es relativ einfach.
Edit: https://fppkg.cnoc.nl/about dürfte auch nicht ganz aktuell sein. Der Link auf https://svn.freepascal.org/svn/fpcproje ... rver/trunk sollte doch auf git umgestellt sein ?!
Code: Alles auswählen
P:=AddPackage('fcl-async');
P.ShortName:='fcla';
{$ifdef ALLPACKAGES}
P.Directory:=ADirectory;
{$endif ALLPACKAGES}
P.Version:='3.2.2';
P.Author := 'Mostly Sebastian Guenther';
P.License := 'LGPL with modification, ';
P.HomepageURL := 'www.freepascal.org';
P.Email := '';
P.Description := 'Asynchronous event management of Free Component Libraries (FCL), FPC''s OOP library.';
P.NeedLibC:= false;
P.OSes:=AllUnixOses;
if Defaults.CPU=jvm then
P.OSes := P.OSes - [java,android];
Edit: https://fppkg.cnoc.nl/about dürfte auch nicht ganz aktuell sein. Der Link auf https://svn.freepascal.org/svn/fpcproje ... rver/trunk sollte doch auf git umgestellt sein ?!
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Umgang mit FCL-Packages (WAS: Verbesserung Dokumentation/Wiki)
Das war der entscheidende Hinweis, Danke mal wieder!
HG, Armin
HG, Armin