Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi ZeroBasedStrings - wie nun am besten? (https://www.delphipraxis.net/207205-zerobasedstrings-wie-nun-am-besten.html)

Shaun 3. Mär 2021 19:52

Delphi-Version: 10.3 Rio

ZeroBasedStrings - wie nun am besten?
 
Hallo Dres Delphi,
ich hatte eigentlich seit einiger Zeit versucht, mich zwecks Vereinheitlichung innerlich auf Null-basierte Strings einzustellen und immer mit $ZeroBasedStrings ON zu programmieren.
Ist das jetzt noch sinnvoll?

Der schöne Günther 3. Mär 2021 20:03

AW: ZeroBasedStrings - wie nun am besten?
 
Seit vielen Jahren ist es völlig egal ob die darunter liegende Plattform nun bei 0 oder 1 anfängt wenn man denn den StringHelper nutzt:
Delphi-Quellcode:
myString.Chars[0]
gibt das erste Zeichen des Strings, egal ob Windows, iOS oder sonstwas.

Doku:
http://docwiki.embarcadero.com/Libra...ngHelper.Chars

himitsu 3. Mär 2021 21:02

AW: ZeroBasedStrings - wie nun am besten?
 
Also "sinnvoll" ist es jetzt erstmal, dass alle Platformen nun gleich sind (seit 10.4.1 oder war's 2).

Windows so und Android anders ... da war es ein unnötiger Krampf X-Platform-Code schreiben zu wollen.
(auch wenn das hier ein Klacks war, gegenüber ARC und NichtARC)


Die 1 ist es natürlich, da der erste String mit 1 begann. (heißt jetzt ShortString)
OK, eigentlich begann er mit 0, aber auf Index 0 wurde das Längenbyte geschrieben.



Aus Gewohnheit bleibe ich aber bei 1, denn dann hab ich mit Fremdcode bei mit keine Probleme,
oder wenn ich mal in fremde Projekte schaue, denn meißtens ist es 1 und so muß man nicht aufpassen, dass man hier oder da dann das Richtige macht.


Aber ja, realistisch wäre 0 bestimmt besser, da es ein paar CPU-Takte spart, wenn der Compiler den Index nicht intern auf 0 runterrechnen muß, da das erste Char wirklich bei Addresse 0 gespeichert ist.
Und mit Blick auf andere Programmiersprachen wäre es auch nett, wenn dein Code genauso rechnet, wie viele Andere.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:22 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