Turbo C++ Builder 2006 outoa !

Koodaaja80

ilmaisversion imurointilinkki:

http://cc.codegear.com/free/turboc

Kokeilinpa tuota ilmaisversiota.

Mutta: miksi eräs varsin hyödyllinen toiminto on poistettu (tai ainakin muutettu niin, ettei sitä helposti käyttöliittymästä löydä) !

Eli:

Kun C Builderin vanhemmassa versiossa valitsee: Import Pascal Unit (*.pas), niin mikäli kyseessä on kelvollinen Delphillä tehty Unit, niin C Builder luo siitä .hpp -tiedoston, joka on itseasiassa Delphillä tehdyn Unitin interface .osa muunnettuna C -kielelle.

Tuo uusi Turbo C Builder tekee muuten saman, mutta käyttöliittymästä en löytänyt mitään keinoa avata tuota .hpp -tiedostoa.

Aluksi luulin, ettei sitä edes enää luoda, mutta Windowsin resurssienhallinta paljasti, että tuo Turbo C Builderkin luo ko. .hpp -tiedoston, mutta jos C projekti ja Delphillä tehty jotainU.pas ovat eri hakemistossa, niin tuo jotainU.hpp luodaan samaan hakemistoon, jossa jotainU.pas on ennestään.

Mutta siis sitä ei ilmeisesti saa suoraan käyttöliitymästä avattua mitenkään, vaan se pitää joko:

a) avata vaikkapa Notepadilla

b) raahata resurssienhallinnasta C Builderin editoriin

c) Avata C Builderin File / Open -toiminnolla.

Järkevää tietysti olisi, että sen voisi avata suoraan esim hiirten oikean napin tuomalla paikallisvalikolla projektinhallinnasta, johon myös importoitu pascal -unit ilmestyy jos sellaisen projektiin lisää, mutta eipä sitä uudessa Turbo C Builderissa tuolta löydy !

Oli nimittäin pakko turvautua tuohon .pas -> .hpp muunnokseen selvittääkseni, miten tämä käännetään C:ksi:

type

TMyProc = procedure (a,b : Integer);

TMyProcPtr = ^TMyProc;

var

ProcA : TMyProcA;

ProcPtrA : TMyProcPtr;

osoitin funktioon C:llä - tähän löytyy kyllä ohjeita netistäkin pienellä googlettamisella.

Mutta edellisen esitys tyyppimäärittelynä, joka mahdollistaa tämän:

TMyProcPtr MyDemoProc;

void testFunc(int a, int b){

}

MyDemoProc = &testFunc;

// Nyt MyDemoProc osoittaa funktioon testFunc.

Mutta tässä oli siis olennaista tyypin TMyProcPtr määrittely.

Selvitettäväksi jää vielä se, hyväksyykö muut C -kääntäjät C Builderin tuotoksia.

Tässä vielä ensin pascal -koodia...

unit ifacappU2;

interface

uses
Windows, Messages, SysUtils, Classes
;

type
TMyProcA = procedure (A,B : Integer); cdecl;
TMyProcPtrA = ^TMyProcA;

var
ProcA : TMyProcA;
ProcPtrA : TMyProcPtrA;

procedure SomeProcA(A,B : Integer); cdecl;
procedure TestIt;

implementation


procedure SomeProcA(A,B : Integer); cdecl;
begin
//

end;


procedure TestIt;
begin
//
ProcA := SomeProcA;
ProcPtrA := @SomeProcA;
end;


end.

... ja sitten C Builderin tästä tuottama .hpp -tiedosto eli interface -osuus muunnettuna C -kielelle:

// Borland C Builder
// Copyright (c) 1995, 2005 by Borland Software Corporation
// All rights reserved

// (DO NOT EDIT: machine generated header) 'Ifacappu2.pas' rev: 10.00

#ifndef Ifacappu2HPP
#define Ifacappu2HPP

#pragma delphiheader begin
#pragma option push
#pragma option -w- // All warnings off
#pragma option -Vx // Zero-length empty class member functions
#pragma pack(push,8)
#include    // Pascal unit
#include    // Pascal unit
#include    // Pascal unit
#include    // Pascal unit
#include    // Pascal unit
#include    // Pascal unit

//-- user supplied -----------------------------------------------------------

namespace Ifacappu2
{
//-- type declarations -------------------------------------------------------
typedef void __cdecl (*TMyProcA)(int A, int B);

typedef TMyProcA *TMyProcPtrA;

//-- var, const, procedure ---------------------------------------------------
extern PACKAGE TMyProcA ProcA;
extern PACKAGE TMyProcA *ProcPtrA;
extern PACKAGE void __cdecl SomeProcA(int A, int B);
extern PACKAGE void __fastcall TestIt(void);

}   /* namespace Ifacappu2 */
using namespace Ifacappu2;
#pragma pack(pop)
#pragma option pop

#pragma delphiheader end.
//-- end unit ----------------------------------------------------------------
#endif   // Ifacappu2

0

350

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000

      Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

      Luetuimmat keskustelut

      1. Jos nainen harrastaa seksiä

        Useiden kanssa, miten se eroaa miesten mielestä siitä, jos miehellä on ollut useita s kumppaneita? Oletan että kaikki mi
        Ikävä
        342
        3491
      2. Ikävöin sinua kokoyön!

        En halua odottaa, että voisin näyttää sinulle kuinka paljon rakastan sinua. Toivon, että uskot, että olen varsin hullun
        Ikävä
        19
        2308
      3. Pihlaja-puulle

        Illat on mulle pahimpia. En tiiä miks se olis vaan parasta yöstä toiseen nukkua sun kanssa ja herätä sun kasvoihin. Jos
        Ikävä
        15
        1910
      4. Päivieni piristys, missä olet?

        Toit iloa ja valoa mun elämään ☀️ Nyt mennyt kohta viikko ettei ole nähty. Kaipaan nähdä sua silti ja pelkään vaikka tei
        Ikävä
        14
        1615
      5. Kova karman laki

        Karman lain kautta pahantekijä tehdessään pahaa toteuttaa koston ja rangaistuksen sille jolle pahaa on tehty. Tämä tarko
        Hindulaisuus
        417
        1532
      6. Kysymys Kuhmolaisille

        Hei. Olen 32 vuotias nainen ja muutin Kuhmoon noin 12 vuotta sitten. Mutta nyt täytyy ihmetellä ihan ääneen että onhan t
        Kuhmo
        36
        1424
      7. Savimajasta lääketieteen tohtoriksi - ja ei tikkua ristiin

        ”Jos ihminen muuttaa savimajasta tänne kerrostaloon länsimaisen elintason piiriin ilman että tarvitsee panna tikkua rist
        Maahanmuutto
        274
        1392
      8. Älä mahdollisesti ota itseesi

        En voinut tietää. Sitäpaitsi.. niin
        Ikävä
        17
        1284
      9. Olen valtavan ihastunut

        Yritin sen sinulle viime viikolla kertoa, mutta liikaa muuttujia ja isoja tunteita, niin en kyllä ollut kovin selkeä.
        Ikävä
        63
        1086
      10. Ensi viikolla tulen takaisin

        Ja käyn varmaan siellä monta kertaa. Monta mahdollisuutta nähdä jos olet siellä päin
        Ikävä
        20
        1010
      Aihe