【发布时间】:2015-09-18 00:50:56
【问题描述】:
我想在 X 部分字符串中拆分一个字符串。
这是我目前的代码:
procedure SplitFile(var a: StringArray; len: integer; fileString: AnsiString; numberParts: integer);
var
i, Rest, partSize: integer;
tmp: AnsiString;
begin
Rest := len mod numberParts;
SetLength(a, numberParts);
partSize := (len - Rest) div numberParts;
numberParts := numberParts - 1;
for i := 0 to numberParts do
begin
// Get access violation here
CopyMemory(@a[i][1], @filestring[i * partSize], partSize);
end;
if Rest <> 0 then
CopyMemory(@a[numberParts][numberParts*partSize], @filestring[numberParts*partSize], Rest);
end;
我在这一行遇到访问冲突:
CopyMemory(@a[i][1], @filestring[i * partSize], partSize);
我不确定错误究竟是在哪里引起的。 我如何获得 a[i] 的地址,不是 @a[i][1] 吗?当它尝试在第一个循环中访问 @filestring[i* partSize] 时,无论如何都会导致错误,因为它会是 0?
希望有人能解释一下。
谢谢
【问题讨论】:
-
你为什么要使用 Win32
CopyMemory()函数,而不是使用 Delphi 自己的Copy()函数?您在滥用CopyMemory(),这就是您遇到错误的原因。
标签: delphi split copymemory