Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String mehr als 255 Zeichen? (https://www.delphipraxis.net/42089-string-mehr-als-255-zeichen.html)

Logic 13. Mär 2005 14:43


String mehr als 255 Zeichen?
 
Hallo, ich erhalte bei folgender Procedure:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var test:string;
begin
  test:='Bitte wählen sie die Spieleranzahl aus. Tragen Sie daraufhin in den erscheinenden Feldern Ihren Namen ein. Durch Aktivierung der automatischen Kampffunktion werden die Kämpfe automatisch ausgeführt und Sie erhalten nach Beendigung einen Bericht. Sollten Sie diese nicht aktivieren haben Sie die Möglichkeit selber zu würfeln. Sollten Sie die Hilfefunktion nicht benötigen, können Sie diese ebenfalls deaktivieren.';
  showmessage(test);
end;
Folgende Fehlermeldung:
Zitat:

String literals may have at most 255 elements
Also verstehn tu ich auch die Fehlermeldung, nur warum gehen in einen String nicht 255 Zeichen... ich dachte immer, dass ca. 2^(31) Zeichen da rein gehen? Welchen Datentyp muss ich denn dann benutzen?

glkgereon 13. Mär 2005 14:45

Re: String mehr als 255 Zeichen?
 
mach mal statt

'sadhfjksdf
sdfkj
sdf'

das da hin:

'sadhfjksdf'+
'sdfkj'+
'sdf'

SirThornberry 13. Mär 2005 14:45

Re: String mehr als 255 Zeichen?
 
es gehen auch mehr rein, aber der String den du definierst zur Zuweisung muss ja staatich mit in die exe kompiliert werden und für einen staatichen string ist das maximum 255. Du kannst das ganze volgendermaßen umgehen
Delphi-Quellcode:
var LStr: String;
begin
  LStr := 'Textteil1';
  LStr := LStr + 'Textteil2';
  [...]

Luckie 13. Mär 2005 14:45

Re: String mehr als 255 Zeichen?
 
Du kannst im Code nicht mehr als 255 Zeichen am Stück hardgecodet angeben.

himitsu 14. Mär 2005 10:30

Re: String mehr als 255 Zeichen?
 
Also, wenn man nach maximal 255 Zeichen ' + ' einfügt, dann kann man mehr "zusammenhängend" hardcoden - komischer Weise scheint da der Compiler keine Optimierung zu machen und versucht die ein Einzelstrings zusammenzufügen.

PS: auf diese Weise hannst du auch den Text schön übersichtlich auf mehrere Zeilen verteilen.


SirThornberry Methode geht auch, allerding ist dann dort in jeder Zeile LStr := LStr + mit drin.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var test:string;
begin
  test:='Bitte wählen sie die Spieleranzahl aus. Tragen Sie daraufhin in den ' +
    'erscheinenden Feldern Ihren Namen ein. Durch Aktivierung der automatischen ' +
    'Kampffunktion werden die Kämpfe automatisch ausgeführt und Sie erhalten nach ' +
    'Beendigung einen Bericht. Sollten Sie diese nicht aktivieren haben Sie die ' +
    'Möglichkeit selber zu würfeln. Sollten Sie die Hilfefunktion nicht benötigen, ' +
    'können Sie diese ebenfalls deaktivieren.';
  showmessage(test);
end;
Und mit ein paar Zeilenumbrüchen bei der Ausgabe könnte eventuell der User as sogar etwas besser lesen könen (nur so als Vorschlag):
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var test:string;
begin
  test:='Bitte wählen sie die Spieleranzahl aus. Tragen Sie daraufhin in den ' +
    'erscheinenden Feldern Ihren Namen ein. '#13#10'Durch Aktivierung der ' +
    'automatischen Kampffunktion werden die Kämpfe automatisch ausgeführt und ' +
    'Sie erhalten nach Beendigung einen Bericht. '#13#10'Sollten Sie diese nicht ' +
    'aktivieren haben Sie die Möglichkeit selber zu würfeln. '13#10'Sollten Sie ' +
    'die Hilfefunktion nicht benötigen, können Sie diese ebenfalls deaktivieren.';
  showmessage(test);
end;

Brüggendiek 14. Mär 2005 20:33

Re: String mehr als 255 Zeichen?
 
Hallo!

Warum wird das denn als Variable deklariert? Der Text wird doch nicht verändert!

Das kann man doch auch so schreiben:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const test='Bitte wählen sie die Spieleranzahl aus. Tragen Sie daraufhin in den ' +
    'erscheinenden Feldern Ihren Namen ein. '#13#10'Durch Aktivierung der ' +
    'automatischen Kampffunktion werden die Kämpfe automatisch ausgeführt und ' +
    'Sie erhalten nach Beendigung einen Bericht. '#13#10'Sollten Sie diese nicht ' +
    'aktivieren haben Sie die Möglichkeit selber zu würfeln. '13#10'Sollten Sie ' +
    'die Hilfefunktion nicht benötigen, können Sie diese ebenfalls deaktivieren.';
begin
  showmessage(test);
end;
Die Methode mit mehreren
Delphi-Quellcode:
test:=test+'***';
ist übrigens ein ziemlicher Performance-Killer, weil dann jedesmal die Variable neu belegt wird.

Gruß

Dietmar Brüggendiek

Chewie 14. Mär 2005 20:49

Re: String mehr als 255 Zeichen?
 
Zitat:

Zitat von Brüggendiek
Die Methode mit mehreren
Delphi-Quellcode:
test:=test+'***';
ist übrigens ein ziemlicher Performance-Killer, weil dann jedesmal die Variable neu belegt wird.

Nicht, wenn Literale konkateniert (hui, 22 Uhr, da ist es Zeit für Fremdwörter :???: ) werden. Kann der Compiler zur Compilierzeit schon die exakte Anzahl an Zeichen ermitteln, ist es egal, wie die Zeichen notiert sind, lediglich bei der Zuweisung zur Laufzeit macht es einen Unterschied.

Stevie 15. Mär 2005 09:28

Re: String mehr als 255 Zeichen?
 
Vielleicht wär es hier auch praktisch, nen resourcestring zu benutzen!?


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