Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Stringlisten erzeugen mit 3 Hochkommata ''' im Quelltext (https://www.delphipraxis.net/216241-stringlisten-erzeugen-mit-3-hochkommata-im-quelltext.html)

SearchBot 26. Nov 2024 13:23

Delphi-Version: 12 Athens

Stringlisten erzeugen mit 3 Hochkommata ''' im Quelltext
 
Hi,

bei Delphi 12 habe ich als Neuerung gelesen, daß ich Stringlisten im Quelltext einfach anlegen kann, wenn ich sie mit 3 Hochkommas (Hochkommata) einleite und beende.

Es ist aber unglaublich schwierig, hierzu eine Erläuterung in der Hilfe zu finden, weil ''' als Suchbegriff irgendwie nicht funktioniert.
Ich weiß nämlich gerade nicht, wie ich es korrekt im Quelltext reinschreibe, damit die IDE es versteht und mir nicht als Fehler ankreidet.

Delphi-Quellcode:
  Stringliste1.AddStrings(
  '''
   Zeile1
   Zeile2
  '''
  ); // <---- mag die Klammer da nicht? "E2192 Konstanten dürfen nicht für offene Array-Argumente verwendet werden"
Geht das überhaupt so (ich habe mehr als 2 Zeilen, natürlich), oder wie wo finde ich die genaue Syntax (weiß nicht, wie man diese Schreibweise nennt)?

dummzeuch 26. Nov 2024 13:30

AW: Stringlisten erzeugen mit 3 Hochkommata ''' im Quelltext
 
Nein, nicht so, aber Du kannst den String auf die Text-Property zuweisen.

SearchBot 26. Nov 2024 13:48

AW: Stringlisten erzeugen mit 3 Hochkommata ''' im Quelltext
 
Ah, danke. :thumb:

Zwischenzeitlich habe ich die Stelle wieder gefunden, wo ich es gelesen hatte:
https://docwiki.embarcadero.com/RADS...tring-Literale

Dort heißt es noch, "Weitere Informationen zu langen und mehrzeiligen String-Literalen und den Einzugsregeln finden Sie auf unserer Dokumentationsseite zu String-Typen."

Nein, findet man dort derzeit nicht! :roll:

dummzeuch 26. Nov 2024 14:53

AW: Stringlisten erzeugen mit 3 Hochkommata ''' im Quelltext
 
Das Beispiel dort ist auch ein einzelner String, die Zeilen mit "[" und "]" sind Teil des Multline-Stringliterals.

himitsu 26. Nov 2024 15:10

AW: Stringlisten erzeugen mit 3 Hochkommata ''' im Quelltext
 
AddStrings will eine Liste (String-Array oder TStrings/TStingList)
Add will "einen" String

Du hast einen String, der mehrere Zeilen darstellt.



Wenn es eine "Datei" oder ein TMemo ist, dann
Add statt AddStrings

oder du mußt den MultiString splitten und als Array oder StringList an AddStrings übergeben.
Delphi-Quellcode:
  {$TEXTBLOCK LF} 
  StringListe1.AddStrings(
    '''
     Zeile1
     Zeile2
    '''.Split([#10])
  );
ABER, wenn in der StringList anschließend, ohne Speichern und Neuladen, durch die Lines glaufen werden soll, dann klappt das mit dem Add(MultiLineString) nicht.

SearchBot 27. Nov 2024 15:31

AW: Stringlisten erzeugen mit 3 Hochkommata ''' im Quelltext
 
Oh, das mit dem .split() finde ich interessant. Danke für diesen Tipp. :thumb:

In meinem Fall habe ich es StringList.text zugewiesen.
Danach konnte ich wie gewünscht auf die Elemente zugreifen (zB. StringList[1]).

Redeemer 28. Nov 2024 13:01

AW: Stringlisten erzeugen mit 3 Hochkommata ''' im Quelltext
 
Ich verstehe nicht, warum für mehrzeilige Strings eine neue Syntax eingeführt wurde. Es besteht keine Verwechslungsgefahr mit irgendeiner bestehenden Syntax, wenn man einfach mehrzeilige Strings mit bestehender Syntax erlaubt hätte. Sieht vielleicht blöd aus, wenn die erste Zeile direkt hinter dem Hochkomma steht.

Uwe Raabe 28. Nov 2024 13:06

AW: Stringlisten erzeugen mit 3 Hochkommata ''' im Quelltext
 
Das hätte aber die Möglichkeit genommen, die weiteren Zeilen eingerückt darzustellen ohne diese Einrückung in den String zu übernehmen.

himitsu 28. Nov 2024 13:37

AW: Stringlisten erzeugen mit 3 Hochkommata ''' im Quelltext
 
Ich hätte eher das doppelte " verwendet, dann hätte man das NichtEscapen von ' auch bei Einzeilig gehabt.

Vorteil am MultiLineString ist, dass man ' darin nicht verdoppeln muß,
bzw., wenn ''' oder mehr im String vorkommen, dann entsprechend die umgebenden ''' verlängern, also ''''', ''''''' usw. (ungerade Anzahl)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:09 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-2025 by Thomas Breitkreuz