<p dir="ltr">In my experince sigsegv occurs mostly when a field or variable is accessed before initialization.</p>
<p dir="ltr">Try to set a breakpoint in dongle.initkey call. And evaluate the dongle field (open debugger evaluate window)</p>
<p dir="ltr">Look for dongle or one of the tsentinel fields being nil</p>
<p dir="ltr">Liiz</p>
<p dir="ltr">Em 22/06/2015 05:10, "Bo Berglund" <<a href="mailto:bo.berglund@gmail.com">bo.berglund@gmail.com</a>> escreveu:<br>
><br>
> On Mon, 22 Jun 2015 09:16:20 +0300, patspiper <<a href="mailto:patspiper@gmail.com">patspiper@gmail.com</a>><br>
> wrote:<br>
><br>
> >On 22/06/15 02:00, Bo Berglund wrote:<br>
> >><br>
> >> I just made a first test by adding the object to my main form as a<br>
> >> private variable.<br>
> >Which object? Better show the code.<br>
><br>
> Here is the current state of the main form where the object is<br>
> handled:<br>
><br>
> unit FormMain;<br>
><br>
> {$mode objfpc}{$H+}<br>
><br>
> interface<br>
><br>
> uses<br>
>   Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,<br>
> StdCtrls,<br>
>   ExtCtrls,<br>
>   Sentinel;<br>
><br>
> type<br>
><br>
>   { TfrmMain }<br>
><br>
>   TfrmMain = class(TForm)<br>
>     btnFindKey: TButton;<br>
>     stxSerialNo: TStaticText;<br>
>     procedure btnFindKeyClick(Sender: TObject);<br>
>     procedure FormClose(Sender: TObject; var CloseAction:<br>
> TCloseAction);<br>
>     procedure FormCreate(Sender: TObject);<br>
>     procedure Timer1Timer(Sender: TObject);<br>
>   private<br>
>     { private declarations }<br>
>     Dongle: TSentinel; <== My private object variable<br>
>   public<br>
>     { public declarations }<br>
>   end;<br>
><br>
> var<br>
>   frmMain: TfrmMain;<br>
><br>
> implementation<br>
><br>
> {$R *.lfm}<br>
><br>
> { TfrmMain }<br>
><br>
><br>
> procedure TfrmMain.btnFindKeyClick(Sender: TObject);<br>
> var<br>
>   SerialNo: word;<br>
> begin<br>
>   //Code to check for the dongle and if found display its contents<br>
>   Dongle.InitKey; <= I get the exception here<br>
>   Dongle.AppNumber := 1;<br>
>   if Dongle.CheckKey then<br>
>   begin<br>
>     SerialNo := Dongle.SerialNo;<br>
>     stxSerialNo.Caption := IntToStr(SerialNo);<br>
>   end;<br>
> end;<br>
><br>
> procedure TfrmMain.FormClose(Sender: TObject; var CloseAction:<br>
> TCloseAction);<br>
> begin<br>
>   Dongle.Free; <= Destroying the object<br>
> end;<br>
><br>
> procedure TfrmMain.FormCreate(Sender: TObject);<br>
> begin<br>
>   Dongle := TSentinel.Create; <= Creating the object<br>
> end;<br>
><br>
> end.<br>
><br>
> >> "Project DongleTest raised exception class<br>
> >> 'External: SIGSEGV'."<br>
> >The 1st thing that comes to mind is that spromeps.obj is 32 bit and your<br>
> >Lazarus/fpc and Windows are most probably 64 bit. But I am not sure how<br>
> >the compiler/linker would react to that.<br>
><br>
> I think I create a 32 bit application, see below.<br>
><br>
> >You had posted previously:<br>
> >Input file: SPROMEPS.obj, output file: SPROMEPS.coff<br>
> >Converting from OMF32 to COFF32 <--------------------------------<br>
> >Not adding or removing underscores for this filetype<br>
> >Warning 1211: 270 comment records ignored<br>
> ><br>
> >Do you have a 64 bit version of spromeps.obj?<br>
><br>
> No, this is legacy code and is only for 32 bit applications.<br>
> SafeNet has created the driver for both 32 and 64 bit Windows, but the<br>
> 64 bit driver is still used for 32 bit applications (like mine). Has<br>
> always worked fine with the Delphi apps (used since end of the<br>
> 1990:s).<br>
><br>
> They did not provide a SPROMEPS.obj file for 64 bit Delphi maybe<br>
> because that does not really exist yet (according to the Embarcadero<br>
> user forum the newly released 64 bit compiler is not ready for prime<br>
> time...)<br>
><br>
> Question:<br>
> Could it be that Lazarus is anyway compiling for a 64 bit application<br>
> since it is installed on a 64 bit Windows 7 laptop?<br>
> I just assumed that the main application would be 32 bit as is the<br>
> case for Delphi....<br>
><br>
> But if I go into Project Options and look at Compiler Options -><br>
> Config and Target -> Target-specific options there is a checkbox for<br>
> "Win32 gui application (-WG)" and it is checked.<br>
><br>
> So I guess I am creating a Win32 exe as intended...<br>
><br>
><br>
> --<br>
> Bo Berglund<br>
> Developer in Sweden<br>
><br>
><br>
> --<br>
> _______________________________________________<br>
> Lazarus mailing list<br>
> <a href="mailto:Lazarus@lists.lazarus.freepascal.org">Lazarus@lists.lazarus.freepascal.org</a><br>
> <a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus</a><br>
</p>