AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi TIntegerlist - Erklärung der Add-Funktion
Thema durchsuchen
Ansicht
Themen-Optionen

TIntegerlist - Erklärung der Add-Funktion

Ein Thema von scrat1979 · begonnen am 29. Mai 2007 · letzter Beitrag vom 30. Mai 2007
Antwort Antwort
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.029 Beiträge
 
Delphi 10.4 Sydney
 
#1

TIntegerlist - Erklärung der Add-Funktion

  Alt 29. Mai 2007, 22:28
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:
function TIntegerList.Add(Value: Integer): Integer;
begin
  Result:=FList.Add(Pointer(Value));
end;
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?

Hoffe Ihr könnt mir bei meinem kleinen Verständnisproblem weiterhelfen!

Gute Nacht allerseits,

SCRaT
Michael Kübler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: TIntegerlist - Erklärung der Add-Funktion

  Alt 29. Mai 2007, 22:32
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ß.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#3

Re: TIntegerlist - Erklärung der Add-Funktion

  Alt 29. Mai 2007, 22:34
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.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.029 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: TIntegerlist - Erklärung der Add-Funktion

  Alt 30. Mai 2007, 07:30
ahhh!!

Vielen Dank. D.h., man "mißbraucht" hier eine TList um Integer zu speichern. Dann ist es klar.

SCRaT
Michael Kübler
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: TIntegerlist - Erklärung der Add-Funktion

  Alt 30. Mai 2007, 10:12
Was heißt hier mißbrauchen. Warum das Rad neu erfinden wenn es OO gibt.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:17 Uhr.
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