Pentru a insera formularul în dll, nu îl arătați și nu îl cauți

Pentru a insera formularul în dll, nu îl arătați și nu îl cauți

Bună ziua.
O dată voi scrie, în partea de jos m-am uitat ("au arătat aici?"). Practic, există un apel din programul principal, un formular care este ascuns în DLL.

Situația este următoarea: există un cod DLL în Visual C ++. Trebuie să introduceți unele interacțiuni în rețea. Complet programarea în Visual C ++, nu că nu ar fi o vânătoare, totul depinde de absența protocoalelor de rețea și de greutatea codului de program pe care trebuie să-l scrieți (dacă găsiți structura protocolului).






Așa că am decis să convertesc codul la ENR. El a pornit expertul de pe EVE și a convertit codul. Am testat DLL finit, totul funcționează. Pentru a insera protocoalele de rețea vreau să folosesc INDY (există exemple gata de implementare).
Aceasta ar crea cel puțin o componentă dinamică INDY pe care trebuie să o introduceți pe forma aceleiași componente. Aș vrea să introduc o formă în proiect și să folosesc proprietățile sale. Nu voi arăta, deci este necesar doar pentru componente.

Codul DLL convertit este:
dataserv.bpf:


Pentru a insera un formular, am creat un proiect curat și l-am salvat în dosarul App. Apoi am deschis proiectul cu DLL și am inserat formularul acolo (din proiectul App).
când salvez proiectul, am primit fișierul dataserv.bpf după cum urmează:

A trebuit să-l lovesc pe cel vechi și să introduc o nouă linie:







la compilarea proiectului, a apărut o eroare: [Error Linker] Nu s-a putut deschide fișierul "CONTROLS.RES"
Am schimbat fișierul * .res de la proiectul App la CONTROLS.RES, după care compilația a avut succes.

Dar indiferent de modul în care încerc să folosesc proprietățile componentelor din formular, nu mi se întâmplă nimic. Compilația are succes, iar la momentul executării DLL, toate proprietățile sunt nedefinite. Cred că forma trebuie încărcată în memorie, dar cum. Dacă faci un proiect cu un program, nu te gândi la asta, dar aici este.
P.S. DLL-ku nu a fost scris de mine

Asta te-ai aplecat. Nu ai făcut-o. Pentru început, a trebuit să luați totul unu la unu și apoi să vă duceți la versiunea proprie. Dar ești un procrastist răcoros


Așa cum am făcut (toate skopioval unu la unu). cu siguranță, am înțeles că s-ar putea să nu scrie toate din cod, astfel încât bucăți de programul său cod dat sau de memorie (nu sunt un cititor de minte), dar ceea ce am făcut o la una, așa cum a fost scris - nu a funcționat. La început am crezut că nu este nevoie de hedgers și am început să mă sapă în ajutor, dar după ce le-am inserat pe cele necesare, compilatorul nu a vrut să înțeleagă captura (Excepție excp) și lucruri similare.

Și dacă le-ați lăsat, ați fost informați că funcția _SendUdp nu a fost găsită.


Aceasta este ultima mea opțiune, pe care am testat-o ​​la ora două dimineața. Deci nu l-am schimbat, tocmai l-am postat aici. Înainte de asta, am scris SendUdp acolo, care, de altfel, nu a funcționat nici.

Îmi pare rău, dar am sentimentul că nici măcar nu încerc să înțeleg ce vă scriu și ce vă scrieți


Puteam să înțeleg dacă există comentarii și jumătate din cod, pentru mine era o pădure întunecată, deși am încercat să o înțeleg sincer.
de exemplu aici este acest cod:

Asta este, după cum am înțeles, pentru a crea un TMyDataModule, aveți nevoie de un pointer la forma care este utilizată în funcție. Și dacă trebuie să trec parametrii.
Și dacă am mai multe funcții. Poate pentru tine acest cod este foarte usor, dar pentru mine este complet netransparent si privindu-l intr-un an, ma voi gandi si cu ce sunt aici si care este algoritmul aici.

Ca rezultat, întregul TMyDataModule pentru mine a rămas un mister, cu care aș vrea să înțeleg, și a trebuit să fac algoritmi simpli (deși nu atât de eficienți) pe care i-am luat de la carte.







Articole similare

Trimiteți-le prietenilor: