delphi如何定义一个大于255个字符的字符串数组(太简单了吗?不愿回答?) (35分)

  • 主题发起人 主题发起人 hanpengshan_00
  • 开始时间 开始时间
H

hanpengshan_00

Unregistered / Unconfirmed
GUEST, unregistred user!
1. 如定义一个 :myary :array[0..5] of string
可是发现有些字符串大于255个字符,怎么办?
如用指针,使用哪个pstring,PAnsiString?
如何给这样的数组付值和引用?
2. adoquery.sql.text ,最大长度值?
 
本人不熟悉pascal语法。可否说详细些。
怎么给这样的数组付值和引用
myary :='aaaaaaaaaaaaaa'
//这么行吗? --付值
adoquery.sql.text :=myary
//要不要转化? --引用
 
这些问题都不用考虑的
string能分配的长度远远超过你的想像

adoquery.sql.text :=myary <<不需要myary就是一个字符串
 
可是不行啊?
我定义了一个 sqltext :string
sqltext :='select * .......'
//很长很长的sql语句,
发现sqltext 被节掉了超出255的部分
 
Tstringlist
 
myary :array[0..5] of pstring 或则用pwidestring
那么myary :=????如何付值
如何引用????
 
procedure TForm1.Button2Click(Sender: TObject);
var
s:array[1..5] of string;
i:integer;
begin
i:=0;
while i<255 do
begin
s[1]:=s[1]+'aa';
inc(i);
end;
adoquery1.SQL.Add(s[1]) ;
//showmessage(adoquery1.SQL.Text);
showmessage(inttostr(length(adoquery1.SQL.Text)));

end;
此处showmessage显示的结果值为512已经超出你的255了
还不能说明问题吗?
 
我来告诉你吧,普通String类型就是长字符串,最长可以达到2G
但是,在源程序中所有常量字符串,包括你赋值时使用的,
都必须是短字符串,长度不能大于255

你可以把它们分成多段小于255的,用+号连接起来就可以了
不知道,你明白了没有
 
也许下面的对你们有一点帮助:
短字符串(string[n],n=1..255)存储区为静态分配,大小在编译时确定,这是继承于bp for dos的类型
长字符串(ansistring)是delphi独有的,其存储区在运行时动态分配,最灵活也最易被滥用
宽字符串(WideString)是为delphi对宽字符的支持The WideString type represents a dynamically allocated string of 16-bit Unicode characters.
随便说一声SQL.Text为String类型。

多多讨论,呵呵~~~~~~~~~~~~``
 
晕啊,array[0..100000000] of char;
 
用pchar直接指向一个开辟的内存区,即可直接使用.
 
没想到这是个简单又复杂的问题。
现在明白了。
可是真对不起各位,开始我以为这是很简单的问题。所以只开了35‘。sorry.
 
多人接受答案了。
 
后退
顶部