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

Program puca posle pozivanja dlla

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

[ Pregleda: 2011 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Burgos
Nemanja Borić
Amazon Web Services
Berlin

Član broj: 12484
Poruke: 1947
195.252.80.*

Sajt: stackoverflow.com/users/1..


+480 Profil

icon Program puca posle pozivanja dlla26.04.2005. u 21:37 - pre 231 meseci
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
Prikačeni fajlovi
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Program puca posle pozivanja dlla26.04.2005. u 21:53 - pre 231 meseci
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]
 
Odgovor na temu

Burgos
Nemanja Borić
Amazon Web Services
Berlin

Član broj: 12484
Poruke: 1947
195.252.80.*

Sajt: stackoverflow.com/users/1..


+480 Profil

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

Hvala mnogo!!!!!!!!!!!!
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Program puca posle pozivanja dlla26.04.2005. u 22:20 - pre 231 meseci
Da li mozemo da vidimo program kad ga zavrsis? Mozda ces ga postovati na www.srpskisoftware.cjb.net ?
 
Odgovor na temu

Burgos
Nemanja Borić
Amazon Web Services
Berlin

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

Sajt: stackoverflow.com/users/1..


+480 Profil

icon Re: Program puca posle pozivanja dlla27.04.2005. u 10:54 - pre 231 meseci
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?
 
Odgovor na temu

_v!rus_
BGD

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



+1 Profil

icon Re: Program puca posle pozivanja dlla27.04.2005. u 12:46 - pre 231 meseci
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...
 
Odgovor na temu

Burgos
Nemanja Borić
Amazon Web Services
Berlin

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

Sajt: stackoverflow.com/users/1..


+480 Profil

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

Kao u VB: ByVal, ByRef

Hvala mnogo!
 
Odgovor na temu

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

[ Pregleda: 2011 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

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