Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - text mit mehr als 1000 zeichen ?


neocox - Fr 19.12.08 21:48
Titel: text mit mehr als 1000 zeichen ?
also, bin seit paar tagen in delphi drin ;-)
ich nutze codegear 2009+ (so heißt das glaub ich) hab mir dann n Form1 erstellt und wollte in

TMemo oder
Label oder
TEdit oder
RichText oder
TStaticText

einen text einfügen, der mehr als 1000 zeichen hat. jedoch sind alle auf ca 280 beschränkt (steht zumindest immer in der fehlermeldung drin -> zuviele zeichen)
was kann ich denn dann sonst nutzen um soviele zeichen in eins zu bringen ?


Blackheart666 - Fr 19.12.08 22:02

Ein String kann nur 255 Zeichen aufnehmen du kannst aber mit + verknüpfen.

Delphi-Quelltext
1:
Label.Caption:='255Zeichen' + '255Zeichen';                    

1000 Zeichen im Label :roll:


alzaimar - Fr 19.12.08 22:03

Per Code oder wie oder was? Beschreib dein Problem näher.
user profile iconBlackheart666 hat folgendes geschrieben Zum zitierten Posting springen:
1000 Zeichen im Label :roll:
Klar, eine Beschreibung z.B. (obwohl 1000 wirklich etwas viel sind). Oder ein Roman in einem TLabel. Wieso nicht?


neocox - Fr 19.12.08 22:08

naja wenn

Label.Caption:='255Zeichen' + '255Zeichen';

nicht die beste lösung ist (und bei 1000 zeichen im label sehe ich das ja ein :-D ) bin ich offen für bessere vorschläge... geht diese + option denn auch bei Memo, RichEdit und so ?
oder gibts für 1000 zeichen ne andere möglichkeit, die geeigneter wäre ?


Blackheart666 - Fr 19.12.08 22:15

Zu RichEdit und Memo solltest du dir mal die Eigenschaft Lines anschauen.


neocox - Fr 19.12.08 22:17

sind denn die eigenschaften Lines des RichEdit und Memo auch auf 250 zeichen begrenzt ? dann nüztt des mir auch nix. ich müßte dann pro Line 1000 zeichen rein bekommen


jaenicke - Fr 19.12.08 22:42

Die Länge ist nicht beschränkt, nur im Quelltexteditor sind die Zeilenlängen beschränkt... Wenn du dein Programm startest und 500 oder 1000 Zeichen oder so ohne Zeilenumbruch einfügst, dann geht das problemlos.

Und im Quelltexteditor kannst du die Zeilen ja mit + zusammensetzen, solange du keinen Zeilenumbruch einfügst ist da auch keiner. Aber im Quelltext so viel Text zu schreiben ist ja ohnehin Schwachsinn hoch 3, wenn dann lädt man so viel Text ja ohnehin aus einer Datei (oder einer Ressource in der Exe).

Die Eigenschaft ScrollBars musst du auf ssBoth stellen, damit du die Scrollleisten hast, sonst würden dir so lange Zeilen ja auch nix nützen.

Ich sehe zwar im Allgemeinen keinen Sinn darin, aber so lange Zeilen gehen problemlos.


alzaimar - Sa 20.12.08 00:10

Mich würde ein konkretes Beispiel interessieren, wo man im Code (und nicht per DFM) einen Roman als konstanten String einem Text-Control zuweissen müsste. Anderenfalls wäre diese Problematik eher theoretischer Natur, also => Tonne.


neocox - Sa 20.12.08 12:24

also ich habe eine tlistbox mit z.b. 50 einträgen (mitarbeitern). jedesmal wenn ich einen aussuche (anklicke) will ich z.b. seine biographie (deshalb 1000 zeichen) angezeigt bekommen.

das würde dann so aussehen

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
case mitarbeiter of

0: label10.caption := 'biographie von meier mit 1200 zeichen';
1: label10.caption := 'biographie von müller mit 1000 zeichen';
2: label10.caption := 'biographie von schulze mit 1350 zeichen';
...


Delete - Sa 20.12.08 12:27

Und diese Texte willst Du hartkodiert in die Exe schreiben?


neocox - Sa 20.12.08 12:38

naja ich kopiere mir die texte von meiner homepage in das label... also muss das net abtippen.
und es wäre schon gut wenn alles in einer exe steht und nicht noch extra dateien entstehen.


Delete - Sa 20.12.08 12:55

Da fallen mir spontan 2 Möglichkeiten ein:
- Ressourcenstrings (sind AFAIK aber auf 1024 Zeichen begrenzt) oder
- Stringkonstanten

Du musst lediglich darauf achten, dass einzelne Stringliterale innerhalb der IDE 255 Zeichen nicht überschreiten, aber das lässt sich durch Konkatenation leicht umgehen.

Delphi-Quelltext
1:
2:
3:
const sMitarbeiter1 = 'Hier ein Text mit bis zu 255 Zeichen ' + 
'weiterer Text mit bis zu 255 Zeichen ' +
'noch mehr Text';


neocox - Sa 20.12.08 13:16

boah soweit bin ich noch net. ka was Ressourcenstrings sind. is mir zu hoch :-)

sieht das dann so aus ?

Delphi-Quelltext
1:
2:
3:
4:
5:
case mitarbeiter of
0: label10.caption := const smitarbeiter1; 
1: label10.caption := const smitarbeiter2; 
2: label10.caption := const smitarbeiter3; 
...


oder


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var const mitarbeiter1 = text + text + text;
var const mitarbeiter2 = text + text + text;
var const mitarbeiter3 = text + text + text;

case mitarbeiter of
0: label10.caption := mitarbeiter1; 
1: label10.caption := smitarbeiter2; 
2: label10.caption := smitarbeiter3; 
...


Delete - Sa 20.12.08 13:34

Nein, Du deklarierst die Konstanten so, wie ich es angedeutet habe (ohne das "var" davor, das sind ja Konstanten, keine Variablen). Zuweisen kannst Du sie dann einfach so:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
const sMitarbeiter1 = 'Hallo Welt'//nur als Beispiel
      sMitarbeiter2 = 'Delphi macht Spaß';
...
case Mitarbeiter of
  1: Label1.Caption := sMitarbeiter1;
  2: Label1.Caption := sMitarbeiter2;
end;


neocox - Sa 20.12.08 13:43

naja dafür bin ich als neuling ja bei eiuch :-D
um sowas zu "lernen"... obwohl mir das mit var und const eigentlich hääte klar sein können


Delete - Sa 20.12.08 13:54

Wir haben schließlich alle mal angefangen ;)