Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String Pascal字符串到指针_String_Pointers_Pascal - Fatal编程技术网

String Pascal字符串到指针

String Pascal字符串到指针,string,pointers,pascal,String,Pointers,Pascal,我正在尝试使用sdl进行日志记录,我需要写入时间。 文本必须是指针 date //pointer := DateTimeToStr(Now);// AnsiString 这里date是指针,DateTimeToStr(现在)返回AnsiString,编译器在那里停止。 如何修复它?我假设您使用的是Delphi或FreePascal。您当前的代码将给您一个不兼容类型错误。您需要将DateTimeToStr(Now)的结果分配给一个字符串,并将指针分配给该字符串的地址。这里有一个例子 proced

我正在尝试使用sdl进行日志记录,我需要写入时间。 文本必须是指针

date //pointer
:=
DateTimeToStr(Now);// AnsiString
这里date是指针,DateTimeToStr(现在)返回AnsiString,编译器在那里停止。
如何修复它?

我假设您使用的是Delphi或FreePascal。您当前的代码将给您一个
不兼容类型
错误。您需要将
DateTimeToStr(Now)
的结果分配给一个字符串,并将指针分配给该字符串的地址。这里有一个例子

procedure ShowDateTime;
var
  date: ^AnsiString;
  str: AnsiString;
begin
  str := DateTimeToStr(Now);
  date := @str;
  Writeln(date^);
end;  

阅读如何在或中使用指针。

解决方案是使用
PChar
,即指向Char的
指针

var
  str: AnsiString;
  pDateStr: PChar;
...
  str := DateTimeToStr(Now);
  pDateStr := PChar(str);
  // Do whatever you want with the PChar pDateStr

他们不应该只使用PChar/PWideChar吗?这是错误的,除非你使用的是80年代版本的Pascal。任何现代版本(意味着比Turbo Pascal更晚)都会使用PChar来实现这一点。(既然你提到了在Delphi或FreePascal中使用指针,我想我们可以假设1980年的Pascal已经过时了。)如果你提供了要调用的函数的声明,那么我们就可以看到预期的实际数据类型,这会有所帮助。我怀疑SDL代码只是在要求一个类型为
指针的参数。它更可能被定义为
char*