![]() |
TIntegerlist - Erklärung der Add-Funktion
Hallo zusammen,
ich habe im Netz eine schöne Unit namens IntegerList.pas gefunden. Diese funktioniert auch problemlos, nur möchte ich gerne die einfache Add-Funktion komplett verstehen. Vielleicht könnt ihr mir weiterhelfen... :
Delphi-Quellcode:
Wieso wird hier die Funktion Pointer() aufgerufen. Es wird doch nur der über Value übergebene Wert in die Liste eingetragen, oder? Das Auslesen geschieht über ein einfaches FList[Index], d.h. hier wird doch die gespeicherte Zahl direkt aufgerufen. Warum würde in der Add-Funktion nicht einfach "Result := FList.Add(Value)" reichen?
function TIntegerList.Add(Value: Integer): Integer;
begin Result:=FList.Add(Pointer(Value)); end; Hoffe Ihr könnt mir bei meinem kleinen Verständnisproblem weiterhelfen! Gute Nacht allerseits, SCRaT |
Re: TIntegerlist - Erklärung der Add-Funktion
TIntegerList ist eine Ableitung von TList und diese arbeitet mit Pointern. Um beim Hinzufügen keine Warnung/Fehler zu bekommen wird ein harter Cast durchgeführt. Beim auslesen tritt auch ohne Cast kein Compiler-Fehler/Warnung auf.
Und nicht zu vergessen: unter Win32 sind der Datentyp Integer und Pointer jeweils 4 Byte groß. |
Re: TIntegerlist - Erklärung der Add-Funktion
Hallo,
Pointer() ist keine FUnktion, sondern ein Typecast. Das heißt, du sagst dem Compiler, er soll bitte so tun, als wäre "Value" ein Pointer. Das machst du deswegen, weil eine TList normalerweise eben Pointer speichert. Pointer ist aber dasselbe wie Integer - nur dass er normalerweise verwendet wird um eine Speicheradresse anzugeben. Wenn du also einen Integer statt einem pointer übergibst, denkt der Compiler, du hast vielleicht einen Fehler gemacht und weist dich drauf hin. Deswegen musst du ihm sagen "Nein, das ist schon richtig so.". Und das tust du, indem du auf den benötigten Typ castest. |
Re: TIntegerlist - Erklärung der Add-Funktion
ahhh!!
Vielen Dank. D.h., man "mißbraucht" hier eine TList um Integer zu speichern. Dann ist es klar. :thumb: SCRaT |
Re: TIntegerlist - Erklärung der Add-Funktion
Was heißt hier mißbrauchen. Warum das Rad neu erfinden wenn es OO gibt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz