![]() |
Kurioser Compiler-Hinweis - logisch nicht nachvollziehbar
Salü,
Delphi-Quellcode:
Der compiler sagt für diese Zeile, "der Vergleich ergibt immer true".
if ((low(CurveArray) <= index) and (high(CurveArray) >= index)) then
Hmmmm.... Array mit 3 Elementen, dann ist low = 0, high = 2, und index = 6 z.B., dann ist der Ausdruck doch nicht true?! Fehler vom Kompiler? |
Re: Kurioser Compiler-Hinweis - logisch nicht nachvollziehba
Also, erstmal sagt der Compiler nicht "der Ausdruck ergibt immer true", sondern "der Vergleich ergibt immer true". Also ist einer der beiden Vergleiche gemeint. Ist index zufällig unsigned und low kann nicht kleiner als 0 sein (z.B. dynamisches Array)?
0 <= unsigned value ist immer true. |
Re: Kurioser Compiler-Hinweis - logisch nicht nachvollziehba
index ist vom Typ Word und damit in der Tat unsigned.
Dynamisches Array isses auch, also low dann nicht kleiner als 0. Der Vergleich ist nun dann immer true, wenn low auch nicht größer als 0 sein kann ... sonst z.B. low =2 und index = 1 ergäbe false Vermute daher low kann auch nicht größer als 0 sein .... |
Re: Kurioser Compiler-Hinweis - logisch nicht nachvollziehba
Für dynamische Arrays ist low immer null.
|
Re: Kurioser Compiler-Hinweis - logisch nicht nachvollziehba
Änder doch mal testweise dein Array in ein statisches mit dem bereich 1 bis irgendwas und compiliere nochmal
|
Re: Kurioser Compiler-Hinweis - logisch nicht nachvollziehba
Low(Array) gibt dir den 0-basierten Index des 1. Elements zurück.
Was gibt Low() zurück wenn das Array keine Elemente hat, also nil ist ? Was wird High() zurückgeben in diesem Fall ? Schon mal in die Hilfe unter Low() und High() geschaut ? Gruß Hagen |
Re: Kurioser Compiler-Hinweis - logisch nicht nachvollziehba
Zitat:
Zitat:
Zitat:
|
Re: Kurioser Compiler-Hinweis - logisch nicht nachvollziehba
Zitat:
|
Re: Kurioser Compiler-Hinweis - logisch nicht nachvollziehba
Naja, dann sorry, aber "0-basierten Index" hat für mich vom Verständnis soviel bedeutet wie: Immer 0 und dann weiter...
Ergo: erstes Element immer "0" und alle weiteren dann aufsteigend. Seine Aussage stellte sich in meinen AussagenAugen genau anders dar als du es mir nun erklärst. Aber nun gut, dann nehm ich alles zurück und behaupte das Gegenteil. |
Re: Kurioser Compiler-Hinweis - logisch nicht nachvollziehba
Ich lese "0-basierter Index des ersten Elements" als "Index, des ersten Elements, wenn man das Array in ein neues, 0-indiziertes Array kopierte und von dort aus das erste Element des alten Arrays suchte"...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:55 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