IntToBin Implementation in StrUtils [erledigt]

Zur Vorstellung von Komponenten und Units für Lazarus
Antworten
siro
Beiträge: 764
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

IntToBin Implementation in StrUtils [erledigt]

Beitrag von siro »

Hallo zusammen,
ich hatte lange meine eigene Funktion IntToBin verwendet, habe aber grad gesehen, dass es sowas ja schon gibt in der Unit StrUtils.

Wenn ich mir den Code ansehe, komme ich jedoch etwas ins grübeln....
Das sieht so aus, als würde sich die Funktion rekursiv selbst aurufen ???? mit geänderten Parametern ?

IntToBin ruft inttobin auf wenn der Parameter Spaces=0 ist. :roll:

Code: Alles auswählen

function IntToBin(Value: Longint; Digits, Spaces: Integer): string;
.....
  if (spaces=0) then
   begin
     result:=inttobin(value,digits);
     exit;
   end;                    
Wobei hier die Unterscheidung zwischen Groß und Kleinbuchstaben vermutlich einen Sinn erfüllt, den ich noch nicht verstanden habe.
Normalerweise ist die Schreibweise doch unerheblich.

Vieleicht kann mir jemand etwas dazu sagen, rein zum Verständnis. Funktionieren tut es ja korrekt. :wink:
Zuletzt geändert von siro am Mi 18. Jun 2025, 19:45, insgesamt 1-mal geändert.
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

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

Re: IntToBin Implementation in StrUtils

Beitrag von Mathias »

Wen du das IntToBin beim Result anguckst, wirst du sehen, das dies eine overload Funktion mit nur 2 Parametern ist.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Re: IntToBin Implementation in StrUtils

Beitrag von theo »

Ja, es gibt drei "IntToBin" mit verschiedenen Parametern.
Hier ruft die mit 3 Parametern eine mit 2 Parametern auf.
Die Gross-/Kleinschreibung ist egal.

Code: Alles auswählen

function IntToBin(Value: Longint; Digits, Spaces: Integer): string;
function IntToBin(Value: Longint; Digits: Integer): string;
function intToBin(Value: int64; Digits:integer): string;    

siro
Beiträge: 764
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: IntToBin Implementation in StrUtils

Beitrag von siro »

Ja super, jetzt sehe ich das auch.
Man braucht also auch kein reserviertes Wort Overload :roll:
Ich wusste ehrlich gesagt garnicht ob und wie so etwas geht... :P
Nun programmiere ich aber auch erst 38 Jahre.... :mrgreen:

Präzise Antworten und schon hab ich es auch verstanden.
Ich danke euch beiden.
Problem gelöst.
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

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

Re: IntToBin Implementation in StrUtils [erledigt]

Beitrag von Mathias »

Man braucht also auch kein reserviertes Wort Overload :roll:
So viel es mir ist, kommt overload von Delphi her.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Re: IntToBin Implementation in StrUtils [erledigt]

Beitrag von theo »

Ja, ist bei FPC normalerweise nicht nötig.
https://www.freepascal.org/docs-html/ref/refsu86.html

PascalDragon
Beiträge: 964
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: IntToBin Implementation in StrUtils

Beitrag von PascalDragon »

siro hat geschrieben: Mi 18. Jun 2025, 19:30 Man braucht also auch kein reserviertes Wort Overload :roll:
overload ist dann nötig, wenn der Compiler noch weiter nach Funktionen in anderen Units (oder im Fall von Methoden in Klassen in den Elternklassen) suchen soll.
FPC Compiler Entwickler

siro
Beiträge: 764
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: IntToBin Implementation in StrUtils [erledigt]

Beitrag von siro »

Danke Dir auch PascalDragon,
ich werde hier immer mit entscheidenen Informationn versorgt.
So macht das Spass.
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Antworten