Sinnhaftigkeit als *so

Für sonstige Unterhaltungen, welche nicht direkt mit Lazarus zu tun haben
Antworten
Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Sinnhaftigkeit als *so

Beitrag von Maik81SE »

Moin Zusammen,
Ich bin gerade dabei meine Sammlung wieder aufzuräumen und Sammlungschaos von meinen Test's zu bereinigen.
Dabei bin ich auf wiederkehrende Zeilen in meinen Tests gestoßen, welche sich auch in meinen Programmen befinden und frage, ob es sinvoll ist, auf diesen Funktionen eine lib zu bauen.

Anbei stelle ich mir 2 Fragen.
[*] Müsste ich etwas beachten, wenn ich iwan für Android/iOS schreiben will? abgesehen davon, das ich die libs jeweils mitgeben muß
[*] Wie würden sich Klassen in einer lib verhalten. (Aufrufverhalten/Verhalten und co)
[*] Wie verhielten sich Strings als Parameter? Ich weiß, das es da das ein ein oder andere Problem gab, ist aber schon ein paar Monde her, das ich damit gearbeitet habe. :(

Nachteil an der Thematik?
Ich müsste immer die libs mitgeben/übertragen.

Vorteil?
Das Programm dürfte sich, wenn ich es richtig auf dem Zettel habe um die menge, welche ich eine lib aufgelagert wird schrumpfen.

Im Klartext...
in jeder Class, welche ich für meine *.config* nutze verwende ich zB diese Zeilen.

Code: Alles auswählen

constructor Tclassname.Create;
begin
  inherited;
  PConst.fExt			  := 'Settings';
  PConst.fProg			  := 'VeeJee';
  PConst.fFilename                := Set_FileName(PConst.fExt, PConst.fProg, false, false);
  // Weitere Funktion und Grundlegende Settings
end;
die Function

Code: Alles auswählen

Set_FileName(Ext, Prog: String; Global, Subdir: Boolean): String;
hab ich schon erst mal ausgelagert, da auch meiner einer bekennend schreibfaul ist. :mrgreen:
Bin jedoch nicht wirklich 100 prozentig glücklich damit

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6217
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: Sinnhaftigkeit als *so

Beitrag von af0815 »

Warum will jeder auf Libs (egal ob .so oder .dll) gehen ?! Freepascal/Lazarus haben ein bereits ein solches System und zwar in den Units bzw. Komponenten eingebaut.

Ich verwende hier bei mir (in der Firma) eine riesige lib in Unit bzw. Komponentenform. Die erstreckt sich Themenabhängig über einen kompletten Verzeichnisbaum. Zusätzlich liegt die in einem GIT und wenn externe Komponenten eingebunden, auch über eigebundene SubGITS. Die SubGITS würden auch als extra Baumstruktur außerhalb verwenden lassen. Alles was OPM ist, liegt nicht im GIT.

Komponenten die in Libs liegen sind nicht so einfach zu handhaben, dazu hat es in letzter Zeit doch einiges an Diskussion gegeben. Dort wo es unbedingt nötig ist, weil man für andere Sprachen/Programme ein Plugin schreiben muss, sind ja ok und man muss dann mit den Nebeneffekten leben lernen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Sinnhaftigkeit als *so

Beitrag von corpsman »

Ich bin auch kein Fan von Libs, gerade weil ich sehr viel Plattformunabhängig schreibe müsste ich dann ja jedesmal eine separate .dll oder .so oder .dylib bauen.

Übrigens Strings kriegt man mittels Pchar in eine DLL und auch wieder Raus. Bei Klassen wäre ich da vorsichtig ...

Ähnlich wie af0815 habe ich ettliche "kleine" units verteilt auf eine mehr oder weniger Sinnvolle Ordnerstruktur. Wie das aussieht könnt ihr sogar ansehen, denn ich bin seit einiger Zeit dabei diese "Units" auf meiner Github Seite der Allgemeinheit zur Verfügung zu stellen.
--
Just try it

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6217
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: Sinnhaftigkeit als *so

Beitrag von af0815 »

Maik81SE hat geschrieben:
Mo 23. Okt 2023, 19:53
Moin Zusammen,
Ich bin gerade dabei meine Sammlung wieder aufzuräumen und Sammlungschaos von meinen Test's zu bereinigen.
.......
die Function

Code: Alles auswählen

Set_FileName(Ext, Prog: String; Global, Subdir: Boolean): String;
hab ich schon erst mal ausgelagert, da auch meiner einer bekennend schreibfaul ist. :mrgreen:
Bin jedoch nicht wirklich 100 prozentig glücklich damit
Wenn du damit nicht glücklich bist, dann hast du noch nicht die richtige Mischung an den Schnittstellen gefunden. Richtig ist sowas wie die Units von LCL/FCL, die verwendet man ohne viel nach zu denken. Aber Achtung, wenn du was in eine solche Bibliotheks Unit schreibst, darfst du später nichts mehr daran herummurksen, ansonsten lassen sich die Programme die das verwenden nicht mehr sauber verwenden. Genaugenommen sollte man sich gleich einen Unittest damit erstellen und nur solche Änderungen zulassen, die auch den Test später bestehen. (Ist ja auch bei der LCL so ähnlich).
Weil ein grober Fehler ist, diese selbst geschaffenen Bibliotheken, je nach Laune zu ändern, das gibt garantiertes Chaos. Die Selbstdisziplin ist später dann dringend nötig.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: Sinnhaftigkeit als *so

Beitrag von Maik81SE »

Danke euch beiden für das Feedback,

nachdem man nochmal eine Nacht darüber geschlafen hat, ist man zu dem Entschluss gekommen, die Sammlung wie gehabt weiter mit Units aufzubauen.

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

Mathias
Beiträge: 6210
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Sinnhaftigkeit als *so

Beitrag von Mathias »

nachdem man nochmal eine Nacht darüber geschlafen hat, ist man zu dem Entschluss gekommen, die Sammlung wie gehabt weiter mit Units aufzubauen.
Genau so mache ich es auch, eine lib würde ich höchstens machen, wen ich sie für C zur Verfügung stellen müsste.
Mit den Units ist man Plattform unabhängig und müssen nicht für die verschiedene Plattformen gepflegt werden, Ausnahmen vorbehalten.
Man beachte auch das Chaos, was die C-Freunde haben.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: Sinnhaftigkeit als *so

Beitrag von Maik81SE »

Mathias hat geschrieben:
Di 24. Okt 2023, 08:54
nachdem man nochmal eine Nacht darüber geschlafen hat, ist man zu dem Entschluss gekommen, die Sammlung wie gehabt weiter mit Units aufzubauen.
Genau so mache ich es auch, eine lib würde ich höchstens machen, wen ich sie für C zur Verfügung stellen müsste.
Mit den Units ist man Plattform unabhängig und müssen nicht für die verschiedene Plattformen gepflegt werden, Ausnahmen vorbehalten.
Man beachte auch das Chaos, was die C-Freunde haben.
Damit sprichst du gerade ein Faktor an, den ich vor 3?! Jahren ab Akta Gelegt habe, und noch einen Reminder auf den Weg gegeben.
All meine C-Files in Pascal umzuschreiben. :D, sofern nicht schon geschehen.

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

Antworten