Dll, TStringList
Не могу понять в чем дело?! Выдается ошибка в библиотеке, хотя если записать код в модуле все будет работать.
Библиотека примерно такая:
library ASKP;
uses
ShareMem,SysUtils,Classes,Windows;
{$R *.res}
function CodeDosToWin(strWin: String): String;
var
sRes: String;
begin
SetLength(sRes, Length(strWin));
OemToChar(PChar(strWin), PChar(sRes));
SetLength(sRes, StrLen(PChar(sRes)));
Result := sRes;
end;
function ConvertToS(S: String): TStringList; stdcall;
var
SList:TStringList;
i:integer;
begin
SList:=TStringList.Create;
SList.LoadFromFile(S);
for i:=0 to SList.Count-1 do
if Trim(SList.Strings[i])<>'' then
SList.Strings[i]:=CodeDosToWin(SList.Strings[i]);
result.Clear;
result.AddStrings(SList);
SList.free;
end;
exports ConvertToS;
begin
end.
Код модуля примерно такой:
...
function DecodeEasy; external 'ASKP.dll' name 'ConvertToS';
procedure TForm1.Button1Click(Sender: TObject);
var
SList:TStringList;
Str:string;
begin
opendialog1.InitialDir:=ExtractFileDir(Application .exename);
if opendialog1.Execute then
begin
str:=opendialog1.FileName;
SList:=TStringList.Create;
SList.AddStrings(DecodeEasy(str));
memo2.Clear;
memo2.Lines.AddStrings(SList);
SList.free;
end;
end.
|