Autor Beitrag
Btl
Hält's aus hier
Beiträge: 7



BeitragVerfasst: So 13.11.11 19:13 
Moderiert von user profile iconNarses: Abgetrennt von [url=www.delphi-forum.de/...?t=80930]hier[/url].

was heißt eigentlich nil ?
jfheins
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 918
Erhaltene Danke: 158

Win 10
VS 2013, VS2015
BeitragVerfasst: So 13.11.11 19:29 
[url]http://de.wikipedia.org/wiki/Nil_(Begriffsklärung)[/url]

Zitat:
in einigen Programmiersprachen einen nicht zugewiesenen Wert ([url=de.wikipedia.org/wik...ert]Nullwert[/url]).

(Abkürzung für "not in list")
haentschman
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 285
Erhaltene Danke: 33


DX10 Berlin Professional
BeitragVerfasst: So 13.11.11 19:34 
Hallo...
lt. Wörterbuch 8) ...
Zitat:

Deutsch.................................Englisch
nichts; null; keine; keiner;....none; naught; nil; nowt


Beispiel: Wenn eine Objektinstanz nil ist, dann ist sie leer bzw. enthällt kein Objekt.
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Mo 14.11.11 01:07 
Not in list - nicht in der Liste - ist m.E. ein wenig irreführend, denn Listen als Datenstrukturen sind n.m.W. nicht zwingend nötig.

Tatsächlich ist nil das Nullelement, der Nullwert in der Welt der Zeiger, ein Zeiger, der nirgendwohin zeigt, nicht einmal zur 0. Speicherzelle.

So, wie die Null das Nullelement in der Welt der Zahlen, der Nullvektor das Nullelement in der Welt der Vektoren, der Punkt das Nullelement in der Geometrie und die leere Menge das Nullelement in der Mengenlehre ist usw. usf., so ist eben nil eben auch ein Nullelement, nämlich in der Welt der Speicheradressierung(en).


Zuletzt bearbeitet von Delphi-Laie am Mo 14.11.11 12:45, insgesamt 1-mal bearbeitet
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Mo 14.11.11 01:58 
und wen es in der Implementierung interessiert
ausblenden Delphi-Quelltext
1:
Showmessage(IntToStr(Integer(nil)));					

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Mo 14.11.11 04:09 
user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
ein Zeiger, der nirgendwohin zeigt, nicht einmal zur 0. Speicherzelle.

Wenn du Speicherstelle 12345 mit dem Zeiger 0x00003039 (=12345d) adressierst, dann adressierst du die Speicherstelle 0 mit 0x00000000, heißt ein NullPointer (= 0x00000000) zeigt auf die Speicherstelle 0. Oder hab ich jetzt n Denkfehler?! :nut:

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: Mo 14.11.11 05:32 
aus Wikipedia:
:
NIL

Einige Programmiersprachen (beispielsweise Pascal, LISP, Smalltalk, Ruby, Objective-C) verwenden die Bezeichnung nil, anstatt Null oder null. Nil steht einerseits für englisch not in list, also nicht in der Liste. Dies hat historische Gründe, es entstammt der Programmiersprache LISP, die als einzige Datenstruktur den in Blattrichtung verketteten Binärbaum kennt, der aber gewöhnlich nur zur Darstellung einfach verketteter Listen genutzt wird. Die Bezeichnung wurde auch für andere Programmiersprachen übernommen, da das lateinische Wort nil soviel bedeutet wie nichts.



NIL = Abkürzung für nihil : nichts (lateinisch). Man sieht, irgendwo sind die alten Römer doch aktiv. ;) Und wenn es im Nichts ist. ;)

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 14.11.11 09:37 
user profile iconBergmann89 hat folgendes geschrieben Zum zitierten Posting springen:
Wenn du Speicherstelle 12345 mit dem Zeiger 0x00003039 (=12345d) adressierst, dann adressierst du die Speicherstelle 0 mit 0x00000000, heißt ein NullPointer (= 0x00000000) zeigt auf die Speicherstelle 0. Oder hab ich jetzt n Denkfehler?! :nut:

Im Adressraum eines Prozesses gibt es die sogenannte "Partition für NULL*-Zeigerzuweisungen". Dieser liegt bei Windows20000** im Bereich von 0x00000000 bis 0x0000FFFF (x86). Greift ein Prozess lesend oder schreibend auf Adressen dieses Bereiches zu löst der Prozessor eine Zugriffsverletzung aus. Dies wird von Funktionen genutzt, die Zeiger zurückgeben. Kann kein Zeiger zurückgeben werden, weil das Reservieren von Speicher fehlgeschlagen ist, wird eine Adresse aus dem genannten Bereich zurückgegeben, damit der Programmierer die Chance hat zu prüfen, ob erfolgreich Speicher reserviert wurde. Wäre dem nicht so, hätte der Programmierer nicht die Möglichkeit zu prüfen, ob die Funktion erfolgreich war, weil ja alle Adressen letztendlich irgendwie gültig sind, im Sinne von "existieren". Ob dahinter verwertbare Daten stecken oder nicht, ist was anderes.


*) NULL in C/C++ entspricht nil in Pascal
**) Habe leider keine Literatur für Windows XP und höher
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 28.11.11 01:07 
Das NULL-Segment ist immer exakt eine Guard Page mit der nativ vom OS verwendeten Page Size. Auf 32 Bit sind das 4KiB, bei 64 Bit muss ich nachschauen.

Ist bei Linux übrigens genauso, weil das von der CPU-Architektur kommt.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.