delphi 在运行时修改 pchar
delphi modify pchar at runtime
我需要在运行时修改 pchar 字符串。
帮助我使用此代码:
var
s:pChar;
begin
s:='123123';
s[0]:=#32; // SO HERE I HAVE EXCEPTION !!!
end.
现在我在 Delphi 7 中有例外!
我的项目没有使用原生的 Pascal 字符串(没有任何 windows.pas 类 和其他)
字符串文字是只读的,不能修改。因此运行时错误。你需要使用一个变量。
var
S: array[0..6] of Char;
....
// Populate S with your own library function
S[0] := #32;
由于您没有使用 Delphi 运行时库,因此您需要使用自己的函数来填充字符数组。例如,您可以编写自己的 StrLen
、StrCopy
等。您需要制作传递目标缓冲区长度的版本,以确保您不会超出所述缓冲区。
当然,不使用内置的字符串类型会很不方便。您可能需要想出比临时字符数组更强大的东西。
您可以:
procedure StrCopy(destination, source: PChar);
begin
// Iterate source until you find #0
// and copy all characters to destination.
// Remember to allocate proper amount of memory
// (length of source string and a null terminator)
// for destination before StrCopy() call
end;
var
str: array[0..9] of Char;
begin
StrCopy(str, '123123');
s[0]:=#32;
end.
我需要在运行时修改 pchar 字符串。 帮助我使用此代码:
var
s:pChar;
begin
s:='123123';
s[0]:=#32; // SO HERE I HAVE EXCEPTION !!!
end.
现在我在 Delphi 7 中有例外! 我的项目没有使用原生的 Pascal 字符串(没有任何 windows.pas 类 和其他)
字符串文字是只读的,不能修改。因此运行时错误。你需要使用一个变量。
var
S: array[0..6] of Char;
....
// Populate S with your own library function
S[0] := #32;
由于您没有使用 Delphi 运行时库,因此您需要使用自己的函数来填充字符数组。例如,您可以编写自己的 StrLen
、StrCopy
等。您需要制作传递目标缓冲区长度的版本,以确保您不会超出所述缓冲区。
当然,不使用内置的字符串类型会很不方便。您可能需要想出比临时字符数组更强大的东西。
您可以:
procedure StrCopy(destination, source: PChar);
begin
// Iterate source until you find #0
// and copy all characters to destination.
// Remember to allocate proper amount of memory
// (length of source string and a null terminator)
// for destination before StrCopy() call
end;
var
str: array[0..9] of Char;
begin
StrCopy(str, '123123');
s[0]:=#32;
end.