Como colocar mais de 255 chars em apenas um add de uma query
Olá amigos
Como colocar mais de 255 caracteres em apenas um add de uma query?
query.close;
query.SQL.clear;
query.SQL.Add(´primeiros +-255´);
query.SQL.Add(´mais +- 255´);
query.SQL.Add(´mais +- 255);
query.SQL.Add(ultimos =-255);
query.open;
Gostaria de poder colocar em apenas um add, mesmo que tivesse que atribuir primeiro a uma variável.
Problema: sei que tem os tipos ShorString, ANSIstring e WideString.
Li no livro do Delphi 4.0 e no Help do Delphi 7.0 como usá-los.
Estou achando confuso, porque ao declarar como WideString ou ANSIstring, continua reclamando do tamanho.
Se alguém puder me explicar de uma forma bastante prática, fico agradecido.
T+
Como colocar mais de 255 caracteres em apenas um add de uma query?
query.close;
query.SQL.clear;
query.SQL.Add(´primeiros +-255´);
query.SQL.Add(´mais +- 255´);
query.SQL.Add(´mais +- 255);
query.SQL.Add(ultimos =-255);
query.open;
Gostaria de poder colocar em apenas um add, mesmo que tivesse que atribuir primeiro a uma variável.
Problema: sei que tem os tipos ShorString, ANSIstring e WideString.
Li no livro do Delphi 4.0 e no Help do Delphi 7.0 como usá-los.
Estou achando confuso, porque ao declarar como WideString ou ANSIstring, continua reclamando do tamanho.
Se alguém puder me explicar de uma forma bastante prática, fico agradecido.
T+
Delmar
Curtidas 0
Respostas
Lucas Silva
05/03/2004
é + ou - isso???
query.sql.Add(´ ...... ´+ ´........´+ ´........´+ ´........´+ ´........´)
GOSTEI 0
Delmar
05/03/2004
Isso é concatenação. No final serão mais que 255 caracteres que a função add vai adicionar.
Então obtenho o seguinte erro:
[Error] fpessoaCriterio.pas(63): String literals may have at most 255 elements
O problema em si, é fazer com que o compilador suporte atribuição de strings com tamanho maior que 255. Tmb vi alguma coisa a respeito da diretiva {$H}.
Veja isto. Help do delphi 7.0
A string represents a sequence of characters. Delphi supports the following predefined string types.
String types
Type Maximum lengtg Memory required
ShortString 255 characters 2 to 256 bytes
AnsiString ~2^31 characters 4 bytes to 2GB
WideString ~2^30 characters 4 bytes to 2GB
AnsiString, sometimes called the long string, is the preferred type for most purposes.
String types can be mixed in assignments and expressions; the compiler automatically performs required conversions. But strings passed by reference to a function or procedure (as var and out parameters) must be of the appropriate type. Strings can be explicitly cast to a different string type (see Typecasts).
The reserved word string functions like a generic type identifier. For example,
[color=darkblue:8e98ef92d7]var S: string;
creates a variable S that holds a string. In the default {$H+} state, the compiler interprets string (when it appears without a bracketed number after it) as AnsiString. Use the {$H-} directive to turn string into ShortString.[/color:8e98ef92d7]
Onde poderia colocar a diretiva {$H+}, pois acredito que isto deve ser a solução, ou seja, minha instalação delphi deve star {$H-} (fora do padrão).
Então obtenho o seguinte erro:
[Error] fpessoaCriterio.pas(63): String literals may have at most 255 elements
O problema em si, é fazer com que o compilador suporte atribuição de strings com tamanho maior que 255. Tmb vi alguma coisa a respeito da diretiva {$H}.
Veja isto. Help do delphi 7.0
A string represents a sequence of characters. Delphi supports the following predefined string types.
String types
Type Maximum lengtg Memory required
ShortString 255 characters 2 to 256 bytes
AnsiString ~2^31 characters 4 bytes to 2GB
WideString ~2^30 characters 4 bytes to 2GB
AnsiString, sometimes called the long string, is the preferred type for most purposes.
String types can be mixed in assignments and expressions; the compiler automatically performs required conversions. But strings passed by reference to a function or procedure (as var and out parameters) must be of the appropriate type. Strings can be explicitly cast to a different string type (see Typecasts).
The reserved word string functions like a generic type identifier. For example,
[color=darkblue:8e98ef92d7]var S: string;
creates a variable S that holds a string. In the default {$H+} state, the compiler interprets string (when it appears without a bracketed number after it) as AnsiString. Use the {$H-} directive to turn string into ShortString.[/color:8e98ef92d7]
Onde poderia colocar a diretiva {$H+}, pois acredito que isto deve ser a solução, ou seja, minha instalação delphi deve star {$H-} (fora do padrão).
GOSTEI 0
Christiano Sousa
05/03/2004
Cara tenta isso porque eu realmente também nao curto essas limitações:
joga um MEMO no form e testa isso,
procedure TForm1.FormCreate(Sender: TObject);
var
m4xString : String;
begin
m4xString := ' ';
SetLength(m4xString, 1024);
m4xString := 'Aqui vai aquele seu texto com a historia dos sete anões';
memo1.lines.add(m4xString);
end;
joga um MEMO no form e testa isso,
procedure TForm1.FormCreate(Sender: TObject);
var
m4xString : String;
begin
m4xString := ' ';
SetLength(m4xString, 1024);
m4xString := 'Aqui vai aquele seu texto com a historia dos sete anões';
memo1.lines.add(m4xString);
end;
GOSTEI 0
Christiano Sousa
05/03/2004
Cara tenta isso porque eu realmente também nao curto essas limitações:
joga um MEMO no form e testa isso,
procedure TForm1.FormCreate(Sender: TObject);
var
m4xString : String;
begin
m4xString := ' ';
SetLength(m4xString, 1024);
m4xString := 'Aqui vai aquele seu texto com a historia dos sete anões';
memo1.lines.add(m4xString);
end;
joga um MEMO no form e testa isso,
procedure TForm1.FormCreate(Sender: TObject);
var
m4xString : String;
begin
m4xString := ' ';
SetLength(m4xString, 1024);
m4xString := 'Aqui vai aquele seu texto com a historia dos sete anões';
memo1.lines.add(m4xString);
end;
GOSTEI 0
Christiano Sousa
05/03/2004
Cara tenta isso porque eu realmente também nao curto essas limitações:
joga um MEMO no form e testa isso,
procedure TForm1.FormCreate(Sender: TObject);
var
m4xString : String;
begin
m4xString := ' ';
SetLength(m4xString, 1024);
m4xString := 'Aqui vai aquele seu texto com a historia dos sete anões';
memo1.lines.add(m4xString);
end;
joga um MEMO no form e testa isso,
procedure TForm1.FormCreate(Sender: TObject);
var
m4xString : String;
begin
m4xString := ' ';
SetLength(m4xString, 1024);
m4xString := 'Aqui vai aquele seu texto com a historia dos sete anões';
memo1.lines.add(m4xString);
end;
GOSTEI 0
Christiano Sousa
05/03/2004
Cara tenta isso porque eu realmente também nao curto essas limitações:
joga um MEMO no form e testa isso,
procedure TForm1.FormCreate(Sender: TObject);
var
m4xString : String;
begin
m4xString := ' ';
SetLength(m4xString, 1024);
m4xString := 'Aqui vai aquele seu texto com a historia dos sete anões';
memo1.lines.add(m4xString);
end;
Espero que tenham gostado!!
m4x
joga um MEMO no form e testa isso,
procedure TForm1.FormCreate(Sender: TObject);
var
m4xString : String;
begin
m4xString := ' ';
SetLength(m4xString, 1024);
m4xString := 'Aqui vai aquele seu texto com a historia dos sete anões';
memo1.lines.add(m4xString);
end;
Espero que tenham gostado!!
m4x
GOSTEI 0
Arthur Heinrich
05/03/2004
A diretiva {$H+} é colocada no código, quando queremos utilizar a funcionalidade localmente, ligando com o + e desligando com o -.
No seu caso, entendo que você gostaria sempre de utilizar Huge Strings.
Vá no menu Project / Options / Compiler e marque a opção Huge Strings.
Depois, basta fazer o rebuild do projeto.
No seu caso, entendo que você gostaria sempre de utilizar Huge Strings.
Vá no menu Project / Options / Compiler e marque a opção Huge Strings.
Depois, basta fazer o rebuild do projeto.
GOSTEI 0