Я хочу разбить строку в X partstrings.Delphi Разделить строку с CopyMemory в части с помощью смещения
Это мой код до сих пор:
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], sin't it @a [i] [1]? и вызывает ошибку в любом случае, когда он пытается получить доступ к @filestring [i * partSize] в первом цикле, потому что это будет 0?
Надеюсь, кто-то может мне это объяснить.
Благодаря
Почему вы используете функцию Win32 'CopyMemory()' вместо того, чтобы использовать собственную функцию 'Copy()' Delphi? Вы неправильно используете «CopyMemory()», поэтому вы получаете ошибки. –