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

Par pitaja vezano za builder...

[es] :: C/C++ programiranje :: Par pitaja vezano za builder...

[ Pregleda: 2705 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Cola
Slađan Čolić
Banja Luka

Član broj: 23736
Poruke: 160
*.dynamic.sbb.co.yu.

Sajt: www.knjigaimena.com


+5 Profil

icon Par pitaja vezano za builder...12.06.2007. u 19:21 - pre 205 meseci
Kao prvo da vas pozdravim :)
Imam par pitanja (kao sto pise u naslovu)

Zanima me

1 kako se u builderu prave dll fjlovi

volio bi kratak kod ako moze npr dll koji primi
dva AnsiStringa a i b i vrati nezultat a+b
primer je besmislen ali cisto da vidim kako
to radi tj kod koji treba da se pise u daj dll

2 kako da se taj dll pozove iz nekog programa

takodje voleo bi kod :)

3 kako u builderu da preko FTPa prebacijemo fajlove

kratak kod ili upustvo :) naravno za frp koristim sa usernem i passwordom pored ipa i porta



hvala unapred svima

 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Par pitaja vezano za builder...12.06.2007. u 20:12 - pre 205 meseci
Citat:

1 kako se u builderu prave dll fjlovi

Postoji DLL Wizzard (File > New > Other > DLL Wizzard).

Citat:

volio bi kratak kod ako moze npr dll koji primi dva AnsiStringa a i b i vrati nezultat a+b
primer je besmislen ali cisto da vidim kako to radi tj kod koji treba da se pise u daj dll

Iako taj DLL Wizzard nudi da biraš mogućnost korišćenja VCL-a, odnosno AnsiString-ova,
po nekim preporukama ja samo koristim čist API kada su u pitanju DLL-ovi.

Citat:

2 kako da se taj dll pozove iz nekog programa

Samo dodaš LIB fajl koji se dobije uz Buildovanje DLL-a, i posle koristiš funkcije po želji.

Citat:

takodje voleo bi kod :)

1. napravi ručno jedan Header fajl i snimi ga u neki glavni Projektni folder:
--- DLL.H ---
Code:

#ifndef DllH
#define DllH

  #ifdef BUILDING_DLL
    #define MY_FUNC __declspec(dllexport)
  #else
    #define MY_FUNC __declspec(dllimport)
  #endif

  #ifdef __cplusplus
    extern "C" {
  #endif

  MY_FUNC int __stdcall Zbir( int X,int Y );

  #ifdef __cplusplus
    }
  #endif

#endif

2. Pokreni DLL Wizzard
3. Dodaj kod (otprilike ovako):
Code:

#include <windows.h>
#define BUILDING_DLL
#include "Dll.h"
#pragma argsused
int __stdcall Zbir( int X, int Y )
{
    return ( X + Y );
}

4. Snimi, Builduj, u folderu bi trebalo da imas i DLL i LIB
5. Napravi normalnu Windows Forms aplikaciju (snimi recimo isto gde i DLL).
6. Dodaj LIB od DLLa u Projekat (Add to Project...)
7. Kod po želji:
Code:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   ShowMessage( Zbir( 2, 3 ) );        
}

Eto, otprilike tako, netestirano... nadam se da nisam nešto ispustio.

Citat:

3 kako u builderu da preko FTPa prebacijemo fajlove
kratak kod ili upustvo :) naravno za frp koristim sa usernem i passwordom pored ipa i porta

Novo pitanje uvek postavi u novoj temi.

Postoji neka NMFTP komponenta u okviru (Net Masters komponenti), a takodje postoji i IdFTP u okviru
Indy seta. Nisam ih nikada koristio, ali pretpostavljam da je potrebno samo podesavati propertije.

P.S.

Vezano za DLL-ove. Obavezno skini:
http://www.frasersoft.net/program/bcbdev.zip
i u sekciji (ako se dobro sećam) Articles imaš jedan od boljih tutorijala vezanih za DLLove i sve
probleme na koje možeš naići pri portovanju MS/Borland DLL-ova.
 
Odgovor na temu

Cola
Slađan Čolić
Banja Luka

Član broj: 23736
Poruke: 160
*.dynamic.sbb.co.yu.

Sajt: www.knjigaimena.com


+5 Profil

icon Re: Par pitaja vezano za builder...13.06.2007. u 01:55 - pre 205 meseci
hvala dll proradio samo je trebalo u koraku 7.
Code:
#include "dll.h"


 
Odgovor na temu

Cola
Slađan Čolić
Banja Luka

Član broj: 23736
Poruke: 160
*.dynamic.sbb.co.yu.

Sajt: www.knjigaimena.com


+5 Profil

icon Re: Par pitaja vezano za builder...15.06.2007. u 23:35 - pre 205 meseci
Sve je ovo super i ok ali sto se tice dll-ova nesto mi nije jasno

Napravio sam klasu (npr nek se zove TTest) koja moze da ima samo jednu instancu, tj singleton
Code:
  
class TTest{
private:
       static TTest *instance;
       TTest();   
       ...
public:
       TTest * getInstance();
       ...
};


Code:

TTest *TTest::instance = NULL;

TTest *TTest:: getInstance(){
       if(!instance)
              instance = new TTest();
       return instance;
}


sad sledi pitanje ako vec POSTOJI instanca klase TTest zasto kada pozivam iz DLLa getInstance() i prolazim kroz kod vidim da je vrednost instance jednaka NULL
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Par pitaja vezano za builder...16.06.2007. u 10:11 - pre 205 meseci
Najbolje pokaži ceo kod (izbaci sve suvišno), pa da vidimo čemu je reč, ovako je sve nagađanje.

Dakle, onaj DLL header fajl bi trebao da budeo otprilike ovako
(mislim da si zaboravio da staviš i static na getInstance() ):
Code:

#ifndef DllH
#define DllH

  #ifdef BUILDING_DLL
    #define MY_FUNC __declspec(dllexport)
  #else
    #define MY_FUNC __declspec(dllimport)
  #endif

  #ifdef __cplusplus
    extern "C" {
  #endif

  class MY_FUNC TTest
  {
       public:
       static TTest *instance;
       static TTest * getInstance();
       // ...
  };

  #ifdef __cplusplus
    }
  #endif

#endif


DLL Source:
Code:

TTest *TTest::instance = NULL;

TTest *TTest::getInstance()
{
   if ( !instance )
      instance = new TTest();
   return instance;
}

int WINAPI DllEntryPoint( HINSTANCE hinst, unsigned long reason, void *lpReserved )
{
   TTest *test;
   test = TTest::getInstance();
   return TRUE;
}


Ovde bi valajlo i DLL_PROCESS_ATTACH, DLL_PROCESS_DETACH, ali to je već neka druga priča.

A na strani Form1:

Code:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   ShowMessage( (long)(TTest::instance) );
}

 
Odgovor na temu

[es] :: C/C++ programiranje :: Par pitaja vezano za builder...

[ Pregleda: 2705 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

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