Тема: Dll, TStringList
Показать сообщение отдельно
  #1  
Старый 09.11.2007, 13:49
k@Z@k k@Z@k вне форума
Новичок
 
Регистрация: 31.07.2007
Сообщения: 55
Репутация: 12
По умолчанию 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.
Ответить с цитированием