Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 2 odgovora
  • 2.224 pregleda

Najnovija ↓

C# i Delphi, braća po oružju? 07.02.2011. u 12:41 · pre 191 mesec #1
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#?

Potpis
Arduino Control Center
Re: C# i Delphi, braća po oružju? 07.02.2011. u 14:39 · pre 191 mesec #2
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.
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: C# i Delphi, braća po oružju? 07.02.2011. u 21:29 · pre 191 mesec #3
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.
Potpis
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme