Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Runntime error 217 при закрытии программы


Автор: mistmax 22.9.2010, 19:16
Вообщем проблема заключается в том что, при закрытии программы, использующая DLL, появляется ошибка "Runtime error 217 at...".Помогите пожалуйста убрать это нехорошее собщение...  До этого была ошибка Invalid pointer operation. Но после подключения модуля ShareMem в форму проекта , в сам исходник проектаи в DLL, она  исчезла.
Форма :
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,ShareMem;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Memo1: TMemo;
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
    public
    { Public declarations }
  end;

var
  Form1: TForm1;
  sl:TStringList;

implementation

function WDS_WForm_EExtract(Source:TStringList;sStart:string;sEnd:string):string;stdcall;External 'WDS.dll';
{$R *.dfm}


procedure TForm1.Button2Click(Sender: TObject);
begin
sl:=TStringList.Create;
sl.Assign(memo1.Lines);
showmessage(WDS_WForm_EExtract(sl,'<option value="101">','</option>'));


end;



end.



Сорс проекта :
Код

program Project1;

uses
  Forms,ShareMem,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.


DLL'ка
Код

library WDS;


uses
  SysUtils,
  Classes,ShareMem;

{$R *.res}
function WDS_WForm_EExtract(Source:TStringList;sStart:string;sEnd:string):string;stdcall;
var
i:integer;
posStart,posEnd,posRelative:integer;
EExtract:string;
begin
   for i:=1 to source.Count do begin
    posStart:=AnsiPos(sstart,source.Strings[i]);
    if posStart>1 then
    begin
      posEnd:=AnsiPos(sEnd,source.Strings[i]);
      posRelative:=posEnd-(posStart+length(sStart));
      EExtract:=copy(source.Strings[i],posStart+length(sStart),posRelative);
      Result:=EExtract;
      exit;
    end;
end;
end;

   Exports
  WDS_WForm_EExtract;
begin
end.

Автор: CodeMonkey 22.9.2010, 22:08
http://www.gunsmoker.ru/2010/03/blog-post.html.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)