Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Klatsch und Tratsch (https://www.delphipraxis.net/34-klatsch-und-tratsch/)
-   -   0-Based Strings ab XE4 (https://www.delphipraxis.net/174424-0-based-strings-ab-xe4.html)

RWarnecke 22. Apr 2013 19:26

AW: 0-Based Strings ab XE4
 
Zitat:

Zitat von stahli (Beitrag 1212412)
Aber wir sollten das hier nicht überdiskutieren (bringt ja eh nix ;-)).

Ganz Deiner Meinung.

jensw_2000 22. Apr 2013 19:39

AW: 0-Based Strings ab XE4
 
Zitat:

Zitat von NamenLozer (Beitrag 1212397)
... da es eben heutzutage hauptsächlich von der Wartung von alten Projekten lebt...

Genau das ist der Punkt.

Die Abwärtskompatibilität von vorhandenem Code war immer ein riesen Plus für Delphi.
Ich hatte einige Delphi 3 Programme, die ich mit wenigen kleinen Anpassungen problemlos in XE2 weiter bearbeite konnte.
Theoretisch sollten viele TP Programme mit 1-2 Anpassungen in der Projektdatei auch noch unter XE3 funktionieren.

Dieser "Investitionsschutz", in Bezug auf investierte Arbeitszeit, war für mich ausschlaggebend, als ich mit Delphi 7 irgendwann angefangen habe kommerziell zu programmieren. Ich kann nicht verstehen, dass man nun damit beginnt, absolut grundlegende Sprachfeatures einzureißen und genau diesen Vorteil wegzuwerfen.

Bernhard Geyer 22. Apr 2013 21:36

AW: 0-Based Strings ab XE4
 
Zitat:

Zitat von NamenLozer (Beitrag 1212397)
Ansonsten, wenn man da schon anfängt, könnte man gleich eine Delphi Language 2.0 rausbringen und mal ganz generell bei den Altlasten aufräumen... was ich mir einerseits manchmal wünschen würde,

Ist doch gemacht. Nennt sich Oxygene. Ist halt nur nicht vom gleichen Hersteller wie Delphi.

Bernhard Geyer 22. Apr 2013 21:38

AW: 0-Based Strings ab XE4
 
Zitat:

Zitat von stahli (Beitrag 1212400)
Dann könnte man auch das Count - 1 einsparen.

wo braucht man in modernen Programmiersprache ein Count - 1?
Vermutlich wird mittlerweile ein Großteil der C#/.NET-Entwickler nicht mal wissen das man Arrays/Liste auch mit einer einfachen Schleife statt einem for each-Konstrukt durchlaufen kann :-)

sh17 23. Apr 2013 05:50

AW: 0-Based Strings ab XE4
 
Zitat:

Zitat von bernau (Beitrag 1212381)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1212375)
Die alten Funktionen bleiben 1-Basiert, die neuen Methoden an der String-Klasse sind 0-Basiert.
Siehe auch http://docwiki.embarcadero.com/RADSt...d_Desktop_Apps

Stimmt. Die waren aber auch schon in XE3 0-Basiert. Ändert sich also nix.

bloss gut das ich das gelesen habe.

d.h. wenn ich jetzt die StringHelper bei String verwende, muss ich 1 draufaddieren? Und mir alle Quellcodestellen markieren um dann bei der Umstellung die 1 wieder weg zu machen? Oder per IFDEF?

Daniel 23. Apr 2013 06:48

AW: 0-Based Strings ab XE4
 
Addieren und abziehen musst Du nur, wenn Du die alten und die neuen Funktionen mischst. Möchtest Du über einen kompletten String laufen, kannst Du die for...in - Schleife nutzen. Oder Du lässt Dir Dir low() und high() die jeweils korrekten Grenzen eines Strings liefern.
Wenn Du häufig auf die erste, dritte oder zwölfte Stelle eines Strings zugreifen müsst. Kannst Du Dir auch Konstanten definieren, die Dir den korrekten Index liefern: FIRST = low(s) oder THIRD = low(s)+2. Auch damit entbindest Du Dich von der Pflicht, manuell die Eins zu addieren.

Furtbichler 23. Apr 2013 07:20

AW: 0-Based Strings ab XE4
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1212427)
wo braucht man in modernen Programmiersprache ein Count - 1?
Vermutlich wird mittlerweile ein Großteil der C#/.NET-Entwickler nicht mal wissen das man Arrays/Liste auch mit einer einfachen Schleife statt einem for each-Konstrukt durchlaufen kann :-)

Also man benötigt das schon, wenn man z.B. den Index für Berechnungen verwenden muss. Und damit dürfte der Großteil der C#/Java/usw-Entwickler schon wissen, wie man Arrays per 'for' durchläuft. Allerdings wird das in Zeiten von LINQ auch immer seltener...

Zitat:

Zitat von Daniel (Beitrag 1212437)
...Oder Du lässt Dir Dir low() und high() die jeweils korrekten Grenzen eines Strings liefern.
Wenn Du häufig auf die erste, dritte oder zwölfte Stelle eines Strings zugreifen müsst. Kannst Du Dir auch Konstanten definieren, die Dir den korrekten Index liefern: FIRST = low(s) oder THIRD = low(s)+2...

Deine gutgemeinten Ratschläge und Tipps halte ich jetzt eher für einen Workaround als für solide Programmierung.

Der Wechsel des String-Paradigmas von 1- auf 0-basiert ist ein dermaßen harter Einschnitt, das man den konsequent gehen muss. Ohne Wenn und Aber. Die alten Programme sind dann eben nicht mehr mit XE3/XE4 kompilierbar. Oder man geht das Risiko ein und ändert den Code. Da die meisten eh nichts von automatisierten Tests halten (reiner Erfahrungswert, kein Vorwurf), wird das eine schöne Achterbahnfahrt ohne Sicherheitsgurt.

Ich habe z.B. eine sehr große Anwendung unter D6. Die werde ich nicht portieren. Der Kunde zahlt es nicht und es wäre Selbstmord. Also habe ich bis ich in Rente gehe eine VM mit D6 am Laufen.

mjustin 23. Apr 2013 07:58

AW: 0-Based Strings ab XE4
 
Was bedeutet diese Änderung für Entwickler von Komponenten und Bibliotheken für Delphi (und wie in meinem Fall auch Free Pascal), die Versionen ab 2009 oder älter untersützen wollen - nach Möglichkeit aus einer einzigen Codebasis?

Sind IFDEFs eine Lösung oder sieht es düsterer aus? :gruebel:

Union 23. Apr 2013 08:07

AW: 0-Based Strings ab XE4
 
Zitat:

Zitat von mjustin (Beitrag 1212454)
Was bedeutet diese Änderung für Entwickler von Komponenten und Bibliotheken für Delphi

Viel, viel Arbeit.

mjustin 23. Apr 2013 09:22

AW: 0-Based Strings ab XE4
 
Zitat:

Zitat von Union (Beitrag 1212455)
Zitat:

Zitat von mjustin (Beitrag 1212454)
Was bedeutet diese Änderung für Entwickler von Komponenten und Bibliotheken für Delphi

Viel, viel Arbeit.

Ach, echt? Dann werde ich gleich mal eine neue Kaffemaschine ordern :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:54 Uhr.
Seite 3 von 4     123 4      

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