当string超过255字节 超界? ( 积分: 50 )

  • 主题发起人 主题发起人 renaihao
  • 开始时间 开始时间
R

renaihao

Unregistered / Unconfirmed
GUEST, unregistred user!
我定义了一个记录类型的变量:
TWordRec = Record
Name: String;
MemoText: String;
var
F: File of TWordRec;
然后写入一个文件,可是当超过255字节,就报'超界’错误,我该怎么办?
String 不是有2G吗?
能写入换行符吗?

也曾经试过 {$H+} 和声明成长字符型 可是都报错

谁能指点下哦
 
作为记录类型的文件,长度应该是已知的!!!
TWordRec = Record
Name: String【20】;
MemoText: String【20】;
像你那样是不对的!delphi
可能作为最大的长度使用了吧!
255是短字符串2个字符的长度!
 
Name: ansiString;
MemoText: ansiString;
或者
Name: wideString;
MemoText: wideString;
 
to menzhe

但是 我想让Name 那个超过255怎么做?
 
array[0..10000] of char
 
array[0..10000] of char

比如 memo1.lines:= TWordRec.name 提示 类型不对
怎么使用呢?
 
这个默认是ansistring;
你最好用BUFFER。
TWordRec = Record
Name: array [0..511] of char;
MemoText: array [0..511] of char;
end;
 
to 天真

TWordRec.MemoText := Memo1.Lines.Text;

提示 [Error] Main.pas(446): Incompatible types: 'Array' and 'PAnsiChar'
 
TWordRec.MemoText :=string( Memo1.Lines.Text);
 
[Error] Main.pas(446): Incompatible types: 'Array' and 'String'

还是出错
 
老大,你不用用COPYMEMORY啊
var str : string;
str := memo1.text;
FillChar(WordRec.MemoText ,SizeOf(WordRec.MemoText),0);
CopyMemory(@WordRec.MemoText,@str[1],length(str));
 
s:= Memo2.Lines.Text;
FillChar(MyRecInfo.GameSdoFilter ,SizeOf(MyRecInfo.GameSdoFilter),0);
CopyMemory(@MyRecInfo.GameSdoFilter,@s[1],length(s));







for I:=0 to length(Memo2.Lines.Text)-1 do
begin
MyRecInfo.GameSdoFilter:= char(s[i+1]);
end;

请问天真 上面和下面哪个对?

还有 如果把数组给赋值了 如果想取里面的值 怎么取?
 
都可以啊,
不过效率上一个高
你要取值直接就
showmessage(MyRecInfo.GameSdoFilter);
系统会自动转成STRING类型
 
memo1.lines:= string(TWordRec.name)

这样试试
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
606
import
I
后退
顶部