Utilizarea interfețelor deschise ale mijlocului de programare Delphi Caracteristici de lucru cu interfețe în Delphi

Utilizarea interfețelor deschise ale mijlocului de programare Delphi Caracteristici de lucru cu interfețe în Delphi

Acesta este articolul de pe forumuri: „Cum rotesc un rând într-un DLL?”, „Cum transfer și rotesc o serie de înregistrări?”, „Cum transfer un formular într-un DLL?”.

Ca să nu-ți pierzi jumătate din viață căsătorindu-te, îți voi aduce totul pe un platou.

Aceste articole au fost menționate în diverse moduri pe acest blog de mai multe ori, iar în acest articol au fost adunate și organizate. Pe scurt, vă puteți grăbi spre cele care distrug DLL-ul.

Notă importantă: articolul trebuie citit consecvent. Aplica codul pentru a fi ghidat mai mult iac aplica-l, pe sectiunea skin (articol) se adauga codul aplicatiilor cu detalii noi. De exemplu, chiar la începutul articolului nu există procesare a erorilor, se folosesc metode „clasice” (cum ar fi wiki-ul GetLastError, vă rugăm să sdtcall etc.), imediat ce articolul este înlocuit cu altele mai adecvate. Din aceste motive, modelele „noile” („non-urgențe”) nu necesită putere. În caz contrar, ar fi necesar să inserați o notă ca aceasta: „această axă este discutată în acest paragraf de mai jos, iar această axă este discutată în acest paragraf”. În orice moment, la sfârșitul articolului, există un mesaj pentru codul terminat, scriind cu instrucțiuni pentru tot ce este spus în articol. Poți doar yogo frate și vikorystuvati. Și articolul explică adevărul și de ce. Dacă nu-ți pasă de „vestea bună și de ce” - pleacă până la sfârșit și trimite-o la fund.

doar pentru rezultat

termeni zhorstke dotrimannya

Noroc

Vikonanny la proiect

sfaturi tehnice pentru cadouri

Programare, consultare suplimentară cu 1C

Cum facem

1. Discutam problema telefonic. Dacă este evident acces de la distanță- Afișați-o pe ecranul computerului dvs.

2. Estimăm munca în ruble, pentru că proiectul este grozav, pentru că durează aproximativ câțiva ani.

3. Ne înscriem la robot.

4. Preiai munca din programul tau, daca sunt neajunsuri, noi le corectam.

5. Punem un suport, iar tu vei plânge.

Varietate funcționează

1. Toți roboții sunt împărțiți în 3 categorii: consultație, actualizare configurație tipică, dezvoltarea și programarea unui nou semnal, instrucțiuni, butoane etc.

3. În perioada de lucru, specificațiile tehnice cu descrierea și efectuarea lucrării sunt elaborate în prealabil cu 10 ani. Munca începe după finalizarea sarcinii de la dvs.

Suport tehnic

1. Dacă detectați orice probleme la roboții adoptați anterior, pe o perioadă de 3 luni, le corectăm fără rău.

2. Pentru clienții obișnuiți, orice deficiențe ale roboților noștri vor fi corectate fără costuri.

Programe pentru gestionarea afacerii dvs.

Adăugați 1C: Enterprise

Mi є dealer oficial Companii 1C, puteți obține mai mult de la noi produse software si licente. Pe lângă achiziționarea „cutiei”, vă vom ajuta să configurați programul, să oferiți consultanță și configurarea de bază detaliată.

  • Imagine contabilă
  • Automatizare pentru magazin
  • Vânzări cu ridicata
  • Asistența la instalare și reglarea inițială este inclusă în pachet!
  • Reglarea fină a configurației în funcție de nevoile controlerului, dezvoltarea de noi module bazate pe funcțiile necesare configurației standard.
1s Contabilitate 1C: Managementul comerțului 1C:Rozdrib 1C: Managementul salariilor și al personalului
Pret 3300 ruble. Pret 6700 ruble. Pret 3300 ruble. 7400 de ruble.

Numele serverului.

Configurați instantaneu serverul + 1C.

Fără server? Nu contează, vom selecta și vom configura rapid serverul la „Khmara”. Pentru o mică taxă veți obține o soluție foarte fiabilă.

  • Disponibilitate 24\7
  • Nu este nevoie să tăiați cu umiditate administrator de sistem(Economiile acoperă costul serverului dvs.).
  • Shvidka a instalat și instalat 1C pe server, după 3 zile veți avea deja un sistem funcțional.
  • Indiferent dacă vă puteți muta sau nu server local pentru că deciziile nu guvernează.

SMS de la 1C

Vrei ca clienții tăi să afle cât mai curând posibil despre promoții și reduceri? Clienții nu se vor întoarce? Configurați trimiterea de SMS-uri direct de la 1C!

Compania noastră poate configura rapid trimiterea de SMS-uri către clienții dvs. direct de la 1C. Vă rugăm să vedeți ce poate fi automatizat:

  • Plățile pentru achiziții și bonusuri vor fi emise imediat după achiziția finală.
  • Declararea bonusurilor pe card ca cadou de Ziua Națională înainte de o altă zi semnificativă sau sfântă.
  • Informații despre depozitarea mărfurilor în depozit.
  • Termenul bonusurilor cadou s-a încheiat.
  • Informații despre necesitatea plății anticipate și a rezervării bunurilor.
  • Adrese cu detalii despre indicatii catre magazin, numere de telefon.
  • eu etc.

Personalizarea în 1C poate fi făcută de specialiștii noștri sau de specialiștii dvs. Despre tarife puteți afla pe pagina de tarife SMS.

  • Livrare SMS garantată, se percep bani suplimentari per SMS.
  • Okrema tarifare pentru SMS-uri pentru piele.
  • Refaceți echilibrul în diferite moduri.
  • Consultați istoricul tuturor mesajelor SMS trimise în orice moment.
  • Numele contactorului înlocuiește numărul digital al numărului de telefon contactat.

Am o problemă cu o clasă Delphi și un cod C++. delphi dll demo, care exportă o funcție care rotește un obiect.
Codul meu Delphi Dll arată astfel:

Biblioteca DelphiTest; // folosește partea.... tip IMyObject = procedura de interfață DoThis(n: Integer); funcția DoThat: PWideChar; Sfârşit;

TMyObject = class(TInterfacedObject,IMyObject) procedura DoThis(n: Integer); funcția DoThat: PChar; Sfârşit;

// Implementarea TMyObject merge aici ... procedura TMyObject.DoThis(n: Integer); begins showmessage("Veți găsi această metodă cu "+intToStr(n) +"parametru"); Sfârşit;

funcția TMyObject.DoThat: PChar; start showmessage ("Veți găsi funcția DoThat"); Rezultat:= Pchar("Buna, sunt Dothat"); Sfârşit;

// Exportați funcția DLL:

Funcția CreateMyObject: IMyObject; stdcall;export; var txt: TextFile; începe AssignFile(txt,"C:\log.log"); Resetare(txt); Writeln(txt, „bună ziua”); Rezultat:= TMyObject.Create; Sfârşit;

exportă CreateMyObject;

În proiectul meu C++, am numit interfața IMyObject după cum urmează:
Clasa IMyObject (public: IMyObject(); virtual ~IMyObject(); virtual void DoThis(int n) = 0; virtual char* DoThat() = 0; );

Și funcția mea principală este așa:
Typedef IMyObject* (__stdcall *CreateFn)(); int main() ( HMODULE hLib; hLib = LoadLibrary(L"DelphiTest.dll"); assert(hLib != NULL); // trece !! CreateFn pfnCreate; pfnCreate = (CreateFn)GetProcAddress((HINSTANCE)hLi "); if (pfnCreate == NULL) ( DWORD errc = GetLastError(); printf("%u\n", errc); // primește eroarea 127 ) else( printf("succes load\n"); ) IMyObject* objptr = pfnCreate(); objptr->DoThis(5);

De a cărui aplicație încerc să scap când încerc să obțin acces la funcția exportată. scutiri la rand:

IMyObject* objptr = pfnCreate();

Poți să-mi spui ce e în neregulă cu fundul meu.

Și, dacă este posibil, există un fel de metodă de lucru pentru accesarea clasei Delphi (DLL) cu cod C++.

Decizie

Prima problemă este apelul la metode. Interfața Delphi este un registru wikilist, care este specific wiki-urilor Delphi. Vikoristannya stdcall De exemplu, pentru metodele de interfață. Există o problemă cu C++. Interfața dvs. C++ este vinovată de a fi ca IUnknown În plus, nu este vinovată de invalidarea unui constructor sau destructor. Trebuie să fii administrator cu drepturi ridicate. Acesta este, de asemenea, un alt punct potențial al minții.

Îmi dau seama că există și alte binecuvântări și asta este tot ce știu înainte.

Programarea orientată pe obiecte (OOP) transferă, de asemenea, concepte fundamentale la clasă la interfață.

Ce este interfața și care sunt caracteristicile lucrului cu ea? Programare Delphi?

Interfața este o structură semantică și sintactică în codul programului care este utilizată în specificarea serviciilor care sunt furnizate de o clasă sau componentă (Wikipedia).

În esență, interfața semnifică un transfer de putere între metodele care trebuie să fie victorioase atunci când se lucrează cu clasa, care interfață implementează, precum și semnătura lor (nume, tip de date, parametri care sunt primiți (pentru proceduri și funcții) ій) і etc.). Astfel, o clasă care implementează o altă interfață poate implementa în mod necesar toate componentele sale. Mai mult, în același mod, ca în noua descriere.

Interfețele se aliniază adesea cu clasele abstracte, dar în ciuda tuturor asemănărilor, alinierea nu este în întregime corectă. Clasele abstracte, cel puțin, controlează vizibilitatea membrilor. În același timp, zona de vizibilitate nu este alocată pentru interfețe.

Interfețele vă permit să creați o arhitectură structurată care unifică accesul la alte funcționalități și, de asemenea, elimină o serie de probleme asociate cu declinul claselor (interfețele se pot stabili și într-un fel).

Pentru a introduce interfața Delphi, utilizați cuvântul cheie interfață. Cuvântul cheie este un cuvânt cheie care desemnează secțiunea modulului până la care pot fi adăugate apeluri (între Cuvinte cheie interfață și implementare). Cu toate acestea, atunci când interfața este asurzită, este introdusă o sintaxă diferită, similară cu declararea clasei.

Delphi/Pascal

IMyNewInterface = procedura de interfata InterfaceProc; Sfârşit;

IMyNewInterface =interfață

procedura InterfaceProc;

Sfârşit;

Astfel, sintaxa în sine pentru comunicarea cu interfața nu are diferențe fundamentale față de alte metode de programare (în special sintaxa bazată pe Pascal). În același timp, implementarea interfețelor are un nivel caracteristic scăzut.

În dreapta este că interfețele Delphi au fost introduse inițial pentru a suporta tehnologia COM. Prin urmare, interfața IInterface, care în Delphi este strămoșul tuturor celorlalte interfețe (un fel de analog al TObject), conține deja trei metode de bază de lucru cu această tehnologie: QueryInterface, _AddRef, _Release. Ca rezultat, ori de câte ori o clasă implementează orice interfață, este necesară implementarea metodelor sale. Vă rugăm să rețineți că această clasă nu este destinată robotului COM.

Datorită particularității interfeței IInterface, Delphi are o varietate de interfețe, în cele mai multe cazuri, care duc la adăugarea de capabilități clar neviabile la clasă.

Există o clasă de bibliotecă TInterfaceObject, care găzduiește implementarea acestor metode și, ca urmare, dispare necesitatea implementării lor în mod independent. Cu toate acestea, deoarece Delphi nu suportă o scădere semnificativă a clasei, stagnarea sa duce adesea la o complexitate suplimentară în proiectarea și implementarea funcționalității care nu mai este necesară.

Toate acestea au dus la punctul în care, indiferent de toate posibilitățile pe care se speră pentru interfețe, acestea practic zastosuvannya Delphi nu a funcționat cu COM.

Fiind optimizat pentru munca de rangul principal de tehnologie, interfețe și, mai precis, adăugarea de funcționalitate și arhitectură de către acestea într-o manieră cuprinzătoare, cu cele mai înalte cerințe, nu se poate îndeplini singur.

Prin urmare, mulți programatori Delphi au economisit, de fapt, mult efort și instrumente greoaie pentru dezvoltarea arhitecturii suplimentelor.

poarta de acces interfata Cumpărătorul este redus să aleagă dintr-o paletă de componente ale roboților și programelor necesare, componente Delphi, servicii interfata management, precum și interfata afișarea informațiilor și transferarea acestora în Formular cu un aspect suplimentar.

Interfața de utilizator pe care o creați trebuie să utilizeze elemente standard, ușor de utilizat și să asigure o ușurință maximă de utilizare. Toate acestea sunt în cele din urmă determinate de următorul criteriu: eficacitatea interfeței - rezultate maxime cu efort minim.
Principiile creației interfata manuala Vidomi. Ca si tine principii sacre când este deschis interfețe pentru clienți pot fi observate trei prevederi principale:

  1. Programul este responsabil să ajute visonati zavdannya și să nu devină qim zavdannya.
  2. Când lucrează cu un program, profesionistul nu se face vinovat că s-a făcut să arate ca un prost.
  3. Programul trebuie să acționeze în așa fel încât koristuvach-ul să nu folosească computerul ca un prost.
Primul principiu- Aceasta este ceea ce se numește „perspectiva” a interfeței. Interfața cu utilizatorul trebuie să fie intuitivă, ușor de învățat și să nu cauzeze probleme utilizatorului, cum ar fi neplăceri în timpul procesului de lucru. Utilizați componente standard, neîmpodobite, asamblați-le pe cele originale, selectate prin programe de control similare și veți atinge criteriile de proiectare primul principiu.

Un alt principiu se află în mâinile intelectualilor bogați. Pentru mine este clar că de multe ori persoanele care desfășoară activități independente nu numai că sunt reticenți în a lucra la computer, ci pur și simplu le este frică să o facă pe cont propriu. Prin urmare, interfața cu clientul ar trebui să fie cât mai ușor de utilizat.
În plus, temerile koristuvach-urilor sunt cel mai adesea justificate și chiar și performanța programelor și a computerului în sine nu este comparabilă cu performanța, de exemplu, creată de baze de date bogate. În plus, programatorul, cu interfața creată a recuperatorului de datorii, va implementa acum programul „protecție împotriva prostiei” - în cazul acțiunilor incorecte și al introducerii de date incorecte de către client. Toate programele trebuie strivite cu un astfel de zakhist, este necesar să-l distrugi și, ca urmare, programul robot va ghici faimosul „clic la stânga, glisează la dreapta”! Și cei pe care programul le creează ca o problemă majoră încep să creeze ei înșiși probleme.
Pentru restul lumii alt principiu Nu este necesar să permiteți programului să „corecteze” acțiunile koristuvach-ului și să indice ce vi se întâmplă, ceea ce vă limitează cadrul îngust. De asemenea, nu vă lăsați copleșiți în mod arogant de informațiile și sugestiile afișate, în special de cele de dialog, care implică asistentul ca robot. Și mai bine, anunțați-ne posibilitatea de a activa indicii.

Al treilea principiu Scopul este de a crea programul cu cea mai mare raționalitate posibilă. Indiferent de dezvoltarea rapidă a tehnologiei informatice, programele ample cu greu pot fi numite cele care posedă inteligență artificială. Mirosurile sunt respectate de roboții din koristuvach, afișați pe ecran casete de dialog cu alimente proaste care striga de surprindere in cele mai simple situatii. Drept urmare, proprietarii vor striga în inimile lor: „Aceasta este o mașinărie proastă!”
Apreciez în mod deosebit nevoia unei alimentații regulate pentru aproape toată lumea editori de text despre cei care nu salvează modificările aduse textului, deși textul original și cel final nu sunt separate printr-un simbol. Deci, am tastat și apoi am întors totul înapoi, nu pot să înțeleg greșit! Trebuie să verific dacă nu am închis nimic.

Asigurați-vă că urmați aceste reguli:

Elemente de interfață standard
Vickory componentele standard pentru acest element de interfață. După ce v-ați stabilit programul, profesorul nu va aștepta o oră pentru a vă cunoaște, ci va începe imediat să lucreze - acesta este unul dintre semnele unui program dezvoltat profesional.
Paletă mică de instrumente
Încercați să vikorizați nu prea multe componente diferite. Și, desigur, vikorista aici într-un singur loc o componentă standard, într-o manieră similară, de asemenea, a pus-o împreună.
Aceeași poziție între elementele kerubanului
Rearanjați elementele interfeței la un nou nivel între ele. Componentele împrăștiate creează aspectul unui produs pregătit neprofesionist. Și, în sfârșit, plasarea atentă pe Form a butoanelor, comutatoarelor, proporțiilor și a altor componente care formează interfața este un semn de lucru clar.
TabOrder. "Ordinea corectă
TabOrder- aceasta este ordinea deplasării cursorului de pe ecran cu ajutorul elementelor la apăsarea unei taste Tab. Într-un program scris corect, cursorul se deplasează, urmând logica robotului care lucrează cu programul. Când este creat de un program, programul schimbă adesea componente, elimină unele și adaugă altele după cum este necesar. Ca urmare, în program gata făcut cursorul sare haotic în spatele Formei. După finalizarea programului, nu uitați să vă acordați TabOrder.
Alegeți fonturile
Lasă fontul să fie calm. Sarcinile pentru conversia fonturilor Delphi sunt potrivite pentru orice sistem pe care poate rula programul dumneavoastră. Folosiți fontul aldine numai pentru a afișa elementele importante. Zastosuvannya cursive si in special fotoliu, Un astfel de koristuvach poate fi confundat cu o hiperbolă - un ton josnic.
Selectați întrebări
Deoarece există o lipsă de culori pentru elementele de interfață, la fel ca în cazul fonturilor, este mai bine să le umpleți cu cele standard. Delphi folosește paleta sistemului Windows, iar utilizatorul, după ce a schimbat-o, poate personaliza cu ușurință culorile pentru a se potrivi.
Control alternativ
Un program dezvoltat profesional îi oferă mamei posibilitatea de a lucra nu numai cu mouse-ul, ci și cu tastatura. Nu este de vină pentru funcţiile care sunt la dispoziţia viconianului mai puţin decât misha (pictura în editori grafici nu te asigura!). Pentru funcțiile care sunt cele mai utilizate, ar trebui să transferați tastele rapide pentru clic rapid.
Țintește interfața
Dacă există elemente specifice ale interfeței client, atunci interacțiunea dintre client și program constă în:
  • tipul elementului de control al sarcinii asociate acestuia;
  • reguli prin care funcţionează elementul de control.
    Pe această pagină puteți vedea regulile de creare a anumitor elemente ale interfeței.
Și acum vreau să vă arăt ce instrumente folosește Delphi pentru a gestiona componentele din formular, plasarea lor reciprocă și comportamentul cursorului la apăsarea unei taste Tab.

Pentru a amesteca clar fiecare componentă în ordinea corectă, de la început trebuie să le vezi. Puteți, pur și simplu, să încercuiți zona de pe formular cu un urs pentru a indica componentele selectate. Abo, calmează-te" Schimb", utilizați același urs pentru a indica componenta pielii care este vizibilă. Faceți clic în mod repetat pe ursul de pe componenta vizibilă (în timp ce apăsați " Schimb") ia din noua viziune.

Aceste componente pot fi procesate ca un întreg - transferate în formular, atribuite valori noilor autorități, copiate (pentru instalare, de exemplu, pe alt formular) și apoi șterse.

Acum faceți clic butonul corect una dintre componente la un moment dat și selectați din meniul „floppy”. Poziție -> Aliniere... Apare la sfârșitul dialogului, care vă permite să reglați poziția componentelor grupului pe orizontală și pe verticală. De exemplu, trebuie să ne aliniem cele două butoane cu marginea din stânga și să le creăm astfel încât să existe încă un aliniament vertical între ele. Pentru cine sunt vizibile butoanele radio? Orizontală: pe partea stângăі Verticală: spațiu în mod egal.

Articol vibrat Centru, mutăm componentele astfel încât centrele lor să fie deplasate pe aceeași linie orizontal sau vertical, iar punctul Centru în fereastră mută componentele din centrul ferestrei, de asemenea, orizontal și vertical.

Am un rând de meniu Tab O comanda... determină apariția unei casete de dialog care permite cursorului să mute elementele interfeței în timp ce apăsați o tastă Tab. În momentul în care Formularul apare pe ecran, cursorul se află, desigur, pe componenta care se află în primul rând al ferestrei de dialog. Și apoi treceți în jos în listă. În caseta de dialog, două săgeți albastre „sus” și „jos” indică pozițiile componentei vizibile. Vedeți componenta necesară, utilizați săgețile pentru a vă deplasa la intrarea necesară din listă și așa mai departe.

Când selectați un element de meniu Control -> Acesta este un submeniu care constă din două elemente:

  • Aduceți în față
  • Trimite în spate
Aceste metode componente sunt disponibile programatic. Button1.SendToBack mută butonul în „fundal” și Button1.BringToFront- În „primul plan”. Dacă o componentă este plasată deasupra alteia, aceste metode pot fi folosite pentru a le înlocui. Problemele în care acest lucru poate fi blocat sunt evidente.

 

 

Tse tsikavo: