Autor Téma: Převod .h souborů do Delphi  (Přečteno 444 krát)

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 754
  • Karma: 42
    • Verze Delphi: 10.3
Převod .h souborů do Delphi
« kdy: 13-07-2019, 12:26:21 »
Ahoj,

nevíte někdo o nějakém dobře fungujícím nástroji pro převod .h hlavičkových souborů do Delphi? Potřebuji použít prntntv.h (funkce PTOpenProvider atd.), bohužel v Delphi také nejsou. V nejhorším to zkusím nějak ručně, ale nástroj by se hodil i pro případné další konverze.

Díky,

Karel

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4397
  • Karma: 39
    • Verze Delphi: XE7 professional
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 754
  • Karma: 42
    • Verze Delphi: 10.3
Re:Převod .h souborů do Delphi
« Odpověď #2 kdy: 13-07-2019, 16:52:08 »
Ano, přesně takový druh aplikace, ale aby vytvářel alespoň trošku funkční výsledky. Tenhle zvládnul přepsat jen pár konstant, to je ještě horší, než když to matlám ručně :-)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4397
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:Převod .h souborů do Delphi
« Odpověď #3 kdy: 13-07-2019, 18:52:57 »
Keďže sa neviem hnúť, tak radšej robím niečo iné. Asi si na to narazil. Našiel som v podstate len 2 odkazy.

Na toto bol jeden odkaz, že je dobrý
http://www.drbob42.com/tools/headconv.htm
Nič k tomu
https://blog.grijjy.com/2018/05/29/chet-a-c-header-translator-powered-by-clang/
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4397
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:Převod .h souborů do Delphi
« Odpověď #4 kdy: 13-07-2019, 19:31:25 »
Tu sú nejaké rady/návody k prevodu. Ak to budeš robiť ručne, možno Ti to v niečom pomôže. Viď prílohu. Je tam len *.doc
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 754
  • Karma: 42
    • Verze Delphi: 10.3
Re:Převod .h souborů do Delphi
« Odpověď #5 kdy: 13-07-2019, 20:17:05 »
Díky, díky.

Já se většinou zaseknu na něčem takovém:
Kód: Delphi [Vybrat]
  1.         hr = ::CoCreateInstance(
  2.             __uuidof(PrintDocumentPackageTargetFactory),
  3.             nullptr,
  4.             CLSCTX_INPROC_SERVER,
  5.             IID_PPV_ARGS(&documentTargetFactory)
  6.             );

To pak vyvstávají otázky jako třeba: kde vzít PrintDocumentPackageTargetFactory, proč předávají jen 4 parametry, když CoCreateInstance jich očekává 5 (IID_PPV_ARGS nejspíš z toho jednoho argumentu udělá dva) apod.

No třeba se z donucení to C++ (snad je to C++ :-) ) na stará kolena naučím. Stáhnul jsem si free verzi Microsoft Visual Studia a byl jsem příjemně překvapený - a zároveň trochu naštvaný, protože pár věcí, co mě v ne zrovna levných Delphi rozčilují, tady fungují zdarma dobře. Třeba v Delphi Ctrl + kliknutí na identifikátor "obvykle" skočí na jeho definici, ale někdy IDE třeba 10 sekund přemýšlí a na definici pak stejně neskočí a nepomůže tomu ani kompletní rebuild. Nebo že se při krokování zobrazí, jak dlouho trvalo vykonání kroku. Nebo možnost snadno rozdělit okno editoru na půlky... Samozřejmě za tu chvíli netuším, jaké mouchy má Visual Studio.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 754
  • Karma: 42
    • Verze Delphi: 10.3
Re:Převod .h souborů do Delphi
« Odpověď #6 kdy: 14-07-2019, 09:27:32 »
Děkuju, zatím jsem se s tím nějak popral, každé poprvé je těžké :-)

Co jsem přesně nepochopil, je (v DocumentTarget.h):

Kód: Delphi [Vybrat]
  1. typedef class PrintDocumentPackageTargetFactory PrintDocumentPackageTargetFactory;
  2. ...
  3. EXTERN_C const CLSID CLSID_PrintDocumentPackageTargetFactory;
  4. class DECLSPEC_UUID("348ef17d-6c81-4982-92b4-ee188a43867a")
  5. PrintDocumentPackageTargetFactory;
  6. ...
  7.         hr = ::CoCreateInstance(
  8.             __uuidof(PrintDocumentPackageTargetFactory),
  9. ...


Ale k fungování naštěstí stačilo:

Kód: Delphi [Vybrat]
  1. const PrintDocumentPackageTargetFactory: TGUID = '{348ef17d-6c81-4982-92b4-ee188a43867a}';
  2. ...
  3. hr:=CoCreateInstance(PrintDocumentPackageTargetFactory,
  4.