AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi TStringHelper.Split ist in 10.0 und 10.3 unterschiedlich
Thema durchsuchen
Ansicht
Themen-Optionen

TStringHelper.Split ist in 10.0 und 10.3 unterschiedlich

Ein Thema von Neutral General · begonnen am 1. Mär 2019 · letzter Beitrag vom 1. Mär 2019
Antwort Antwort
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

TStringHelper.Split ist in 10.0 und 10.3 unterschiedlich

  Alt 1. Mär 2019, 11:15
Delphi-Version: 10 Seattle
Folgender Code gibt mir in 10.0 "4" aus und in 10.3 "5":
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var arr: TArray<String>;
begin
  arr := 'a;b;;;'.Split([';']);
  Caption := IntToStr(Length(arr));
end;
Ist das bekannt? Gibts dafür einen guten Grund?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.006 Beiträge
 
Delphi 12 Athens
 
#2

AW: TStringHelper.Split ist in 10.0 und 10.3 unterschiedlich

  Alt 1. Mär 2019, 11:46
Gibts dafür einen guten Grund?
Hängt vielleicht mit der neuen TStringSplitOption ExcludeLastEmpty zusammen. Ab Rio kann man dieses Verhalten steuern, während es davor implizit so gehandhabt wurde (was faktisch ein Bug war, da der letzte Eintrag unterschlagen wurde, obwohl ExcludeEmtpy nicht angegeben war).

https://quality.embarcadero.com/browse/RSP-20772
https://quality.embarcadero.com/browse/RSP-11302
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: TStringHelper.Split ist in 10.0 und 10.3 unterschiedlich

  Alt 1. Mär 2019, 12:14
Aber warum wird das dann nicht in einem Patch für 10.0 auch behoben?
Im Prinzip muss ich TStringHelper.Split jetzt so behandeln als würde sie nicht existieren, weil sie nicht richtig funktioniert.
Und da bin ich Leuten die nicht wissen, dass TStringHelper.Split in 10.0 nicht richtig funktioniert sogar ein Stück voraus, weil ich immerhin keine bösen Überraschungen (mehr) zur Laufzeit erlebe.
Was ist denn das Problem für sowas einen Patch nachzureichen? Gerade wenn in der VCL/RTL solch kritische Fehler enthalten sind, muss das doch auch noch in derselben Version behoben werden!
Ich hoffe langsam echt, dass wir in der Firma irgendwann auf C# umsteigen...
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.006 Beiträge
 
Delphi 12 Athens
 
#4

AW: TStringHelper.Split ist in 10.0 und 10.3 unterschiedlich

  Alt 1. Mär 2019, 15:15
Aber warum wird das dann nicht in einem Patch für 10.0 auch behoben?
Im Prinzip muss ich TStringHelper.Split jetzt so behandeln als würde sie nicht existieren, weil sie nicht richtig funktioniert.
Nein, denn dafür wurde die neue Option ja eingeführt.

Wenn man das gleiche Verhalten in 10.3 herstellen will wie unter 10.0, dann muss der Aufruf arr := 'a;b;;;'.Split([';'], TStringSplitOptions.ExcludeLastEmpty); lauten.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: TStringHelper.Split ist in 10.0 und 10.3 unterschiedlich

  Alt 1. Mär 2019, 15:32
Ja gut, aber wie du ja schon gesagt hast ist das Verhalten in 10.0 ein Bug. Und ich benötige das korrekte Verhalten aus 10.3.
Da bringt mir leider die die Option, dass es in 10.3 auf Wunsch auch verbuggt ist nicht viel
Von daher denke ich schon, dass in 10.0 das Verhalten von 10.3 hätte nachgepatcht werden soll.
Erstens weil es in 10.0 falsch ist und zweitens weil die Methode jetzt nicht abwärtskompatibel ist (worauf Delphi doch normal einen so großen Wert legt).
Wenn sie schon den Fehler in 10.0 nicht beheben, dann hätte ich ja wenigstens das alte Verhalten als Default genommen in 10.3.


Ich bräuchte in 10.0 das Verhalten wie es in 10.3 (ohne ExcludeLastEmpty) ist.
Hab den Code jetzt so umgebaut, dass ich stattdessen mit TStringList + TStringList.Delimiter/StrictDelimiter/DelimitedText splitte.
Das funktioniert in beiden Versionen gleich und zusätzlich auch noch korrekt.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: TStringHelper.Split ist in 10.0 und 10.3 unterschiedlich

  Alt 1. Mär 2019, 15:50
Die Release-Info geht auf die Änderungen der RTL an dieser Stelle ein

http://docwiki.embarcadero.com/RADSt.../de/Neuerungen

Zitat:
Weitere Änderungen für die RTL

TStringHelper.Split liefert jetzt die gleichen Ergebnisse wie die globale Funktion aus StrUtils.
...
Die Methode TStringHelper.Split verfügt über ein geändertes optionales Verhalten basierend auf der neuen Option TStringSplitOptions.ExcludeLastEmpty.
Manchmal sollte man doch die bereitgestellten Infos lesen
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: TStringHelper.Split ist in 10.0 und 10.3 unterschiedlich

  Alt 1. Mär 2019, 15:58
Manchmal sollte man doch die bereitgestellten Infos lesen
Okay, es ist zumindest dokumentiert. Aber das macht es unterm Stricht nicht (viel) besser, oder?
Das Verhalten in 10.0 ist trotzdem falsch und die Methode in 10.3 ist trotzdem nicht abwärtskompatibel.
Und man kann auch nicht davon ausgehen, dass jeder die Patchnotes jeder (oder zumindest der momentan aktuellen) Version komplett von oben bis unten gelesen und sich behalten hat.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.006 Beiträge
 
Delphi 12 Athens
 
#8

AW: TStringHelper.Split ist in 10.0 und 10.3 unterschiedlich

  Alt 1. Mär 2019, 16:26
Von daher denke ich schon, dass in 10.0 das Verhalten von 10.3 hätte nachgepatcht werden soll.
Ich kann mich nur an ein bzw. zwei Back-Patches zu XE6, XE7 und XE8 nach Erscheinen von Delphi 10 Seattle erinnern, die im Rahmen der Subscription verteilt wurden. Danach wurde dieser Service offenbar stillschweigend wieder eingestellt. Backports von Bugfixes sind bei Delphi also in der Regel nicht zu erwarten. Ich sehe jetzt nicht, wieso das gerade bei diesem Bug anders sein sollte.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: TStringHelper.Split ist in 10.0 und 10.3 unterschiedlich

  Alt 1. Mär 2019, 16:54
Es ist bei Delphi nicht üblich, das stimmt.
Die Frage ist: Sollte es üblich sein? Meiner Meinung nach schon.

Aber ich wollte eigentlich gar keine riesige Diskussion über Delphi/Embarcadero/Idera auslösen
Ich denke man merkt, dass ich mittlerweile ziemlich frustriert bin was Delphi angeht...
Kann mir manchmal die Kommentare nicht mehr verkneifen

Aber lassen wir's gut sein. Viele der Sachen die mich Ärgern sind bei Delphi halt so üblich.
Das ist in meinen Augen nichts Positives und auch keine Entschuldigung, aber ich muss mich halt damit abfinden.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  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 21:19 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