delphi在运行时修改pchar

时间:2015-09-07 16:18:52

标签: delphi exception pchar

我需要在运行时修改pchar字符串。 帮我这个代码:

var
  s:pChar;
begin
  s:='123123';
  s[0]:=#32; // SO HERE I HAVE EXCEPTION !!!
end.

现在我在Delphi 7中有例外! 我的项目没有使用原生的pascal字符串(没有任何windows.pas类和其他)

2 个答案:

答案 0 :(得分:1)

字符串文字是只读的,无法修改。因此运行时错误。你需要使用一个变量。

var
  S: array[0..6] of Char;
....
// Populate S with your own library function
S[0] := #32;

由于您没有使用Delphi运行时库,因此您需要提供自己的函数来填充字符数组。例如,您可以编写自己的StrLenStrCopy等。您需要创建传递目标缓冲区长度的版本,以确保不会超出所述缓冲区。

当然,不使用内置的字符串类型会很不方便。您可能需要提出比ad hoc字符数组更强大的功能。

答案 1 :(得分:0)

你可以:

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.