我正在研究delphiXE2,我正在研究PInteger.如果我在我的delphi代码中这样做
var
P: PInteger;
testInt: Integer;
Scores: array[0..4] of Integer=(33,44,56,78,78);
begin
P := @Scores;
testInt := (P+1)^;
WriteLn(testInt);
ReadLn;
end;
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误.
[DCC Error] Project1.dpr(23): E2015 Operator not applicable to this operand type
Run Code Online (Sandbox Code Playgroud)
PS:testInt := (P+1)^;是第23行
但是,当我尝试这个
var
PCh: PChar;
testchar: char;
str: array[0..4] of char=('a','b','c','d','e');
begin
PCh := @str;
testchar := (PCh+1)^;
WriteLn(testchar);
ReadLn;
end;
Run Code Online (Sandbox Code Playgroud)
它运作良好!控制台可以打印'b'!
我不清楚这是怎么发生的,什么时候((指针)(P)+1)^可以工作?
我正在研究win7和delphi 2010.这是我的代码.
library CFGFunc;
uses
sysUtils
Un_ExFuncDll in "base\Un_ExFuncDll.pas"
...
exports
LoadExFuncsInDLL,
...
Run Code Online (Sandbox Code Playgroud)
和Un_ExFuncDll.pas在这里
unit Un_ExFuncDll;
interface
uses
Classes;
procedure LoadexfuncsIndll(); stdcall;
...
Run Code Online (Sandbox Code Playgroud)
编译后,该DLL不起作用.但是我LoadexfuncsIndll()用LoadExFuncsInDLL()(完全匹配出口中的东西)代替了
Un_ExFuncDll.pas.然后它工作了.
Delphi 不区分大小写.但似乎dll中的导出区分大小写.那么,与他们的交易是什么?