Link to home
Start Free TrialLog in
Avatar of SaLz
SaLz

asked on

Long String 255+ elements

How can i get around this 255 limit with a string?

Sal.
Avatar of AndersonCarli
AndersonCarli

Open your project, in Delphi menu choose:
Project, Options
In Compiler tab check the option "Huge Strings"
Avatar of SaLz

ASKER

its ticked already.

[Error] main.pas(152): E2056 String literals may have at most 255 elements

but still get this error
ASKER CERTIFIED SOLUTION
Avatar of AndersonCarli
AndersonCarli

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of SaLz

ASKER

how can I do that auto?
Sorry, I dont undestand what you want to say.. but try this:

var
  s:string
begin
  s:= '01234567890123456789012345678901234567890123456789'+ // 50 chars
      '01234567890123456789012345678901234567890123456789'+ // 100
      '01234567890123456789012345678901234567890123456789'+ // 150
      '01234567890123456789012345678901234567890123456789'+ // 200
      '01234567890123456789012345678901234567890123456789'+ // 250
      '01234567890123456789012345678901234567890123456789'; // 300
lol the answer to this problem was in your question :)

S:='255chars......'
    +'another255chars....'
    +'etc etc';


don't give me any points for that, the answer has already been given, i just found it funny.


"Question Title: Long String 255+ elements"

+ is the answer :)
Hi!

Delphi manage severals types of strings:

Type      Maximum length      Memory required      Used for
ShortString      255 characters                2 to 256 bytes      backward compatibility
AnsiString      ~2^31 characters      4 bytes to 2GB            8-bit (ANSI) characters, DBCS ANSI, MBCS ANSI, etc.
WideString      ~2^30 characters      4 bytes to 2GB      Unicode characters; multi-user servers and multi-language applications

If you get this error is because in any part of your program, the string that you are using is defined as shortstring.

The default strings used in Delphi (from Delphi 2 or maybe Delphi 3) is AnsiString...
Avatar of SaLz

ASKER

Error..

procedure TForm1.Button1Click(Sender: TObject);
var
  a : String;
  b : ShortString;
  c : AnsiString;
  d : WideString;
begin
  a := 'safafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fas';
  b := 'safafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fas';
  c := 'safafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fas';
  d := 'safafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fassafafa fa afs fas';
end;


[Error] main.pas(542): E2056 String literals may have at most 255 elements
[Error] main.pas(543): E2056 String literals may have at most 255 elements
[Error] main.pas(544): E2056 String literals may have at most 255 elements
[Error] main.pas(545): E2056 String literals may have at most 255 elements


any thoughts?
Hummm too many beers tonight...

tobjectpascal says to you the answer...

Simply break the declarations:

a := 'safafa fa afs fassafafa fa afs fassafafa fa afs fas'+
'safafa fa afs fassafafa fa afs fassafafa fa afs fassafafa'+
.....

etc
I thing that this is not definable...
See the topic "Character strings" in the Delphi help:

A character string, also called a string literal or string constant, consists of a quoted string, a control string, or a combination of quoted and control strings. Separators can occur only within quoted strings.
A quoted string is a sequence of up to 255 characters from the extended ASCII character set, written on one line and enclosed by apostrophes

For what reason you need longer literals? :?
>RadikalQ3:  For what reason you need longer literals? :?

I oftern use for sql strings in code..
sql = 'select .....'+
        'where....'
Avatar of SaLz

ASKER

I was really looking for an alternative, because I use that same method already.

but thxs for trying
Salz-

for such long strings consider using a file instead, you can edit the file in any text editor, then load it to Delphi using TStringList

aStringList:TStringList;
aStringVar:string;
begin
  aStringList:=TStringList.Create;
  aStringList.LoadFromFile('thefile.txt');
  aStringVar:=aStringList.Text;
...