Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Program puca posle pozivanja dlla

[es] :: Pascal / Delphi / Kylix :: Program puca posle pozivanja dlla

[ Pregleda: 705 | Odgovora: 6 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Burgos
Zrenjanin

Član broj: 12484
Poruke: 1275
195.252.80.*

ICQ: 290190857
Sajt: www.last.fm/user/Burgos


Profil

icon Program puca posle pozivanja dlla26.04.2005. u 21:37

Kao prvo, zeleo bih da zahvalim svima - uspeo sam da prevedem sve headere na delphi (mozda mi nisu negde dobro definisani tipovi, ali nije veliki problem)

Sada pokrećem aplikaciju i pozivam Dll.

u C++su definicija funckije glasi:

Code:
__stdcall int StartSDK(int pVersion, int Option);


na delphi sam preveo

Code:
function StartSDK(pVersion: Integer; Option: Integer): Integer; stdcall;


Undefined reference sam resio
Code:
function StartSDK;external 'DLL.dll' name 'StartSDK';


I kada pozovem funckiju ona vrati vrednost, ali odmah potom program zakuca

Code:
MessageDlg(IntToHex(RCStartSDK(2, 0), 5), mtInformation, [mbOk], 1);


Citat:
Access Violation...


U attachmentu je uproscena verzija
Dejane, vrati se :)
Prikačeni fajlovi
26.04.2005. u 21:37 

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1402
82.208.201.*

ICQ: 246436949


Profil

icon Re: Program puca posle pozivanja dlla26.04.2005. u 21:53
Problem je bio sto DLL zahteva pointer na onu strukturu u koju treba da ti vrati podatke. Pogledaj kako sam to resio.
Nadam se da je to ono sto ti treba

-Edit-

Nesto me zeza Wierless pa ne mogu da uploadujem kod, ali evo ovako
Code:
unit Unit1;

interface

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

type

cdVersionInfo =  record
    Size: SmallInt ;                    // Size of this structure */
  MajorVersion:    SmallInt;        // Major version number. */
    MinorVersion: SmallInt        ;      // Minor version number. */
    ReleaseVersion: SmallInt        ;    // Release versionn number. 0 means unknown.*/
    chVersion: array[0..32] of Char;    // String of version number.  e.x "1.0.0.1" */
end;
pV = ^cdVersionInfo;

function RCStartSDK(pVersionInfo: pV; Option: Integer): SmallInt; stdcall; external 'RCSDK.dll' name 'RCStartSDK';

type
  TForm1 = class(TForm)
  Button1: TButton;
  procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
 pVara: cdVersionInfo;
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin
  MessageDlg(IntToStr(RCStartSDK(@pVara, 0)), mtInformation, [mbOk], 1);
end;

end.


[Ovu poruku je menjao Srki_82 dana 26.04.2005. u 23:10 GMT+1]
DirectX na srpskom | GLScene na srpskom

There are only 10 types of people in this world; those who understand binary and those who don't.
26.04.2005. u 21:53 

Burgos
Zrenjanin

Član broj: 12484
Poruke: 1275
195.252.80.*

ICQ: 290190857
Sajt: www.last.fm/user/Burgos


Profil

icon Re: Program puca posle pozivanja dlla26.04.2005. u 22:07
To je to Srki!

Hvala mnogo!!!!!!!!!!!!
Dejane, vrati se :)
26.04.2005. u 22:07 

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1402
82.208.201.*

ICQ: 246436949


Profil

icon Re: Program puca posle pozivanja dlla26.04.2005. u 22:20
Da li mozemo da vidimo program kad ga zavrsis? Mozda ces ga postovati na www.srpskisoftware.cjb.net ?
DirectX na srpskom | GLScene na srpskom

There are only 10 types of people in this world; those who understand binary and those who don't.
26.04.2005. u 22:20 

Burgos
Zrenjanin

Član broj: 12484
Poruke: 1275
*.smin.sezampro.yu.

ICQ: 290190857
Sajt: www.last.fm/user/Burgos


Profil

icon Re: Program puca posle pozivanja dlla27.04.2005. u 10:54
Naravno da možete!

Samo, to nije program :)

Prevodim funkcije iz Canonovog RCSDK (‘Remote API Camera Software Development Kit’.) u Delphi.

Nego, našao sam još jedan način da proradi (meni je lepši, nema pointera)

Code:
function RCStartSDK(var pVersionInfo: cdVersion info; Option: Integer): SmallInt; stdcall; external 'RCSDK.dll' name 'RCStartSDK';


Kao što vidite ubacio sam var i radi.

Inače, sasvim slučajno sam ubacio var :), pa možete li mi pojasniti razliku?
Dejane, vrati se :)
27.04.2005. u 10:54 

_v!rus_
BGD

Član broj: 40451
Poruke: 313
*.nat-pool.bgd.sbb.co.yu.



Profil

icon Re: Program puca posle pozivanja dlla27.04.2005. u 12:46
Zasto koristiti adresiranje (@ i ^) ako se bas ne mora, u principu takve stvari se i rade sa var.

Najprostije, var oznacava prosledjivanje parametara PO REFERENCI, a bez var je PO VREDNOSTI. Znaci kada stavis var ti ustvari prosledjujes referencu na promenljivu, tj. pointer, a bez var pravis kopiju vrednosti koju prosledjujes. Ali samo da znas, sve prosledjivanje klasa je implicitno po referenci, iako nigde nema var...
27.04.2005. u 12:46 

Burgos
Zrenjanin

Član broj: 12484
Poruke: 1275
*.smin.sezampro.yu.

ICQ: 290190857
Sajt: www.last.fm/user/Burgos


Profil

icon Re: Program puca posle pozivanja dlla27.04.2005. u 13:02
Sada mi je jasno :)

Kao u VB: ByVal, ByRef

Hvala mnogo!
Dejane, vrati se :)
27.04.2005. u 13:02 

[es] :: Pascal / Delphi / Kylix :: Program puca posle pozivanja dlla

[ Pregleda: 705 | Odgovora: 6 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.