Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #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.
Ответить с цитированием
  #2  
Старый 09.11.2007, 16:33
Аватар для mav_c
mav_c mav_c вне форума
Активный
 
Регистрация: 26.03.2007
Адрес: Москва
Сообщения: 287
Репутация: 30
По умолчанию

Цитата:
Сообщение от k@Z@k
Не могу понять в чем дело?! Выдается ошибка в библиотеке, хотя если записать код в модуле все будет работать.
Библиотека примерно такая:

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.

А в модуле ShareMed добавил?
__________________
---------------------------------------------
Программирование - не профессия, а стиль жизни
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:56.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025