【发布时间】:2013-04-23 08:18:36
【问题描述】:
我是 Delphi 的初学者,现在我想学习这门语言,但我遇到了错误,我不知道问题出在哪里以及如何解决它。这个例子我把它从书上带到了delphi。
错误
[Pascal Error] Engine.pas(41): E2250 没有可以使用这些参数调用的“ShellExecute”的重载版本
所有代码:
unit Engine;
interface
uses Windows, Classes, SysUtils;
type
TTemplate = array of String;
TEngine = class
private
FFileName : String;
FFileLines : TStringList;
protected
procedure Execute(Path : String); virtual;
public
Pattern : TTemplate;
Replace : TTemplate;
procedure Parse;
constructor Create(FileName : String);
destructor Destroy; override;
end;
implementation
{ TEngine }
uses ShellAPI; // włączenie modułu ShellAPI
constructor TEngine.Create(FileName : String);
begin
FFileName := FileName; // przypisanie wartości parametru do
FFileLines := TStringList.Create; // utworzenie typu TStringList
FFileLines.LoadFromFile(FileName); // załadowanie zawartości
inherited Create;
end;
destructor TEngine.Destroy;
begin
FFileLines.Free; // zwolnienie typu
{ zwolnienie tablic }
Pattern := nil;
Replace := nil;
DeleteFile('temporary.html'); // wykasowanie pliku tymczasowego
inherited; // wywołanie destruktora klasy bazowej
end;
procedure TEngine.Execute(Path: String);
begin
// otwarcie pliku w przeglądarce Internetowej
ShellExecute(0, 'open', PChar(Path), nil, nil, SW_SHOW);
end;
procedure TEngine.Parse;
var
i : Integer;
begin
for I := Low(Pattern) to High(Pattern) do
{ zastąpienie określonych wartości w FFileLines }
FFileLines.Text := StringReplace(FFileLines.Text, Pattern[i],
Replace[i], [rfReplaceAll]);
FFileLines.SaveToFile('temporary.html');
Execute('temporary.html');
end;
end.
有错误的地方
ShellExecute(0, 'open', PChar(Path), nil, nil, SW_SHOW);
图片错误
Ctrl+点击
[SuppressUnmanagedCodeSecurity, DllImport(shell32, CharSet = CharSet.Auto, SetLastError = True, EntryPoint = 'ShellExecute')]
function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,
Directory: string; ShowCmd: Integer): HINST; external;
[SuppressUnmanagedCodeSecurity, DllImport(shell32, CharSet = CharSet.Auto, SetLastError = True, EntryPoint = 'ShellExecute')]
【问题讨论】:
-
我无法复制。我也怀疑错误信息。我记得没有任何 Delphi 编译器说过
[Pascal Error]。你真的在使用Delphi吗?哪个版本? -
Delphi 是 Pascal 的儿子,可能在 Borland Developer 2006 中他们编写了 [Pascal] - 但正如我告诉你的那样,我是初学者。
-
@RBA 我在帖子中添加了图片
-
您是否 100% 确定要使用 .net 编译器?我建议改用本机编译器。
-
@Arioch '我编辑了我的帖子并添加了单击 ctrl + click 时获得的信息
标签: delphi delphi-2006