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

C# i Delphi, braća po oružju?

[es] :: .NET :: C# i Delphi, braća po oružju?

[ Pregleda: 1655 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

lan-mi
Lukic Milan
Zrenjanin

Član broj: 156359
Poruke: 140
*.dynamic.sbb.rs.

Sajt: https://lanmisoft.com


+1 Profil

icon C# i Delphi, braća po oružju?07.02.2011. u 11:41 - pre 159 meseci
Izvinjavam se na ovom dužem uvodu.
Kao prvo, želeo bih da napomenem da nisam profesionalac u programiranju jer mi to nije osnovni izvor prihoda, što me naravno ne sprečava da napišem koristan program, za sada isključivo u Delphi-ju.
Kao što sam već ranije spomenuo, zadnja 3 meseca učim C# iz veoma praktičnih razloga, a to je da sam neke programe rađene u Delphiju u firmi u kojoj sam zaposlen (ne kao programer) mogao dobro da unovčim da su bili rađeni u nekoj Microsoftovoj NET platformi, sa detaljno dokumentovanim kodom. U pitanju je velika internacionalna firma gde sve počiva na Microsoftovoj tehnologiji, pa tako i razvoj programa.
Za razliku od Delphija, koji sam učio u hodu, C# radim korak po korak da bi se detaljno upoznao šta može i na koji način da se uradi. To može da bude frustrirajuće, pošto učim neke stvari koje bi u Delphiju uradio iz glave dok u C# (za sada) to zahteva mnogo više vremena. Naravno, to sam i očekivao.

Kao što je Boris ranije već spomenuo, ta zavisnost pravilnog rada C# programa ne samo od verzije windows-a nego i od instaliranog frameworka je za shareware i freeware desktop aplikacije, kakve sam uglavnom i radio, veliki minus. Ispravite me ako grešim, čak i program radjen u framework-u 2.0 neće raditi iako je instaliran samo framework 3.5 i 4.
Za ovo kratko vreme u C#, dve stvari su mi zapale za oko:
1. Za razliku od C#, u Delphiju svaki event komponente je metod forme koja je parent komponente. Deklarisanjem forme u uses klauzoli drugih formi, ti eventi se lako mogu pozivati kao i menjati property-iji komponenti npr Caption-i labela, tekstovi u texboxovima itd., što ja u Delphiju veoma koristim.
Kako u C# to najednostavnije uraditi? Pošto je jedan od tvoraca C# bivši Borlandov čovek, predpostavljam da je za takvu implementaciju imao debeo razlog.
2. Pokušao sam da pronađem komponentu u C# ekvivalentnu TAction u Delphi-u, tražio na net-u i izgleda da je stvarno nema, bar u VS2008.
TAction je klasa koja ima dva eventa - OnExecute (vrši se neka radnja) in OnUpdate (enable-disable instance u zavisnosti od uslova). Dodeljivanjem reference u action property drugih komponenti u ObjectInspektoru-buttonu, menuitem, speedbutton..sve komponente će na OnClick metodu pozivati OnExecute metod akcije, a njhovi property-ji (caption, enabled, disabled)će biti apdejtovani u zavisnosti od uslova u OnUpdate metodi akcije. Ne znam da li sam bio jasan, ako na primer imam jedan mainmenu item, button na toolbaru i menuitem u popup meniju i svi treba da rade istu stvar, u delphi-ju je to lako povezati i sve će biti apdejtovane istovremeno. Kako to jednostavno odraditi u C#?


Arduino Control Center
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: C# i Delphi, braća po oružju?07.02.2011. u 13:39 - pre 159 meseci
Program uradjen za Framework 2.0 ce raditi ako je instaliran 3.5 (ili 3.0).

1. Kada dodelis neki metod iz codebehind-a eventu neke kontrole, mozes promeniti taj metod u public pa ga onda mozes pozivati i iz druge forme pod uslovom da imas referencu na instancu prve (ne mozes pozivati na neinstanciranu formu, osim ako nije static).

2. AFAIK, ovog nema. Najslicnije tome su Commands u WPF-u.
 
Odgovor na temu

Boris B.
Ljubljana

Član broj: 213615
Poruke: 286
*.evj-kabel.net.



+14 Profil

icon Re: C# i Delphi, braća po oružju?07.02.2011. u 20:29 - pre 159 meseci
Citat:
lan-mi: 1. Za razliku od C#, u Delphiju svaki event komponente je metod forme koja je parent komponente.


Ovo pod 1. ti nije baš dobro. Ni u Delphiju ni u C# event handleri nisu vezani na parent komponentu, to što si ti navikao da ih tamo implementiraš, to je druga stvar . C# i Delphi eventi i handleri su skoro potpuno isti, osim što ti c# odmah omogućava multicast evente (nula ili više hendlera na isti event) dok su u delphiju unicast (nula ili jedan po eventu), multicast moraš sam da praviš u Delphiju. Osim toga razlike skoro da nema.

Ono što tebe možda buni je to što Delphi automatski pravi instancu za svaku formu koju imaš u aplikaciji (Svaki npr. TForm1 ima automatski i var Form1: TForm1), i onda kad zoveš nešto iz druge forme pišeš Form1.UradiNesto. Ali šta je zapravo Form1 - samo default instanca klase TForm1 koju je Delphi napravio za tebe. Kada prelaziš sa Delphija na C# treba da počneš da razmišljaš u kontekstu klasa a ne konkretnih instanci.

Citat:
Deklarisanjem forme u uses klauzoli drugih formi, ti eventi se lako mogu pozivati kao i menjati property-iji komponenti npr Caption-i labela, tekstovi u texboxovima itd., što ja u Delphiju veoma koristim

Nemoj to da radiš (čak ni u Delphiju). Umesto da iz jedne forme menjaš tekst od textboxa druge forme i sl., napravi metode na drugoj formi i pusti da ih ona sama menja, tj. koristi separation of concerns, tako ćeš jedino znati ko šta radi i zašto. To ti je kao kad voziš auto, kada hoćeš da ideš brže samo stisneš pedalu, a motor se sam pobrine da našteluje dotok goriva, vazduha i ostalo, nećeš ti da trčiš pod haubu i ručno mu doziraš 25ml goriva.

if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
 
Odgovor na temu

[es] :: .NET :: C# i Delphi, braća po oružju?

[ Pregleda: 1655 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

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