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

ErrObject Class u VB al ne i u C#

[es] :: .NET :: .NET Desktop razvoj :: ErrObject Class u VB al ne i u C#

[ Pregleda: 1588 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

01011011
Avanade
CHICAGO, USA

Član broj: 561
Poruke: 2341
*.messagelabs.net.

ICQ: 45747235
Sajt: www.snailtrail.net


+2 Profil

icon ErrObject Class u VB al ne i u C#26.02.2008. u 16:30 - pre 158 meseci
Pozdrav i dobar vam jos jedan dan :) Inace prilikom koverzacije koda vidim da postoji ErrObject Class koji je koriscen za error handling u Visual BASICU. Pise mi na nekim sajtovima da bih mogao da uradim u C# using Microsoft.VisualBasic; i da to treba da radi, medjutim ne radi. Jeli ovo COM object? Koja bi bolja bila opcija da se ovo uradi u C#? Da li postoji nesto u C# koje radi kao ErrObject Class u VB?

Da li mozda da uradim implementaciju ErrObject.cs vb klase u C#, pa da je tako koristim?

Sta mislite da je najbolja solucija/

Hvala
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12705



+4688 Profil

icon Re: ErrObject Class u VB al ne i u C#26.02.2008. u 16:55 - pre 158 meseci
Sad je prilicno jasno da je to radio VB6 programer :)
Predlazem ti da ne koristis uopste taj objekat nego da "preformulises" kod tako da koristi try/catch.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6006



+4618 Profil

icon Re: ErrObject Class u VB al ne i u C#26.02.2008. u 17:12 - pre 158 meseci
Slazem se, koriscenje On Error Resume Next je najgora stvar koju mozes da uradis u VB.NET-u, i ne postoji nacin da ga implementiras u C# jer je koriscenje istog kompajlerska logika VB.NET kompajlera. Eventualno mozes da simuliras desavanja, ali to ti ne preporucujem, pogledaj sledeci metod iz VB.NETa i pogledaj kako izgleda taj kod kad se iz MSIL-a prebaci u C#:

Code:

VBNET

   Sub Main()
        On Error Resume Next

        Dim c As Integer = 0
        Dim x As Integer = 12 / c

        If Err.Number <> 0 Then
            Console.WriteLine("Greska")
        End If
    End Sub


izgleda benigno, zar ne, pogledaj sad kako nakazno izgleda C# implementacija toga Toliko o strukturalnom programiranju, a kamoli OOPu

Code:

[STAThread]
public static void Main()
{
    int VB$ResumeTarget;
    try
    {
        int VB$CurrentStatement;
    Label_0001:
        ProjectData.ClearProjectError();
        int VB$ActiveHandler = -2;
    Label_0009:
        VB$CurrentStatement = 2;
        int c = 0;
    Label_000E:
        VB$CurrentStatement = 3;
        int x = (int) Math.Round((double) (12.0 / ((double) c)));
    Label_0024:
        VB$CurrentStatement = 4;
        if (Information.Err().Number == 0)
        {
            goto Label_004B;
        }
    Label_003D:
        VB$CurrentStatement = 5;
        Console.WriteLine("Greska");
    Label_004B:;
        goto Label_00C3;
    Label_0051:
        VB$ResumeTarget = 0;
        switch ((VB$ResumeTarget + 1))
        {
            case 1:
                goto Label_0001;

            case 2:
                goto Label_0009;

            case 3:
                goto Label_000E;

            case 4:
                goto Label_0024;

            case 5:
                goto Label_003D;

            case 6:
                goto Label_004B;

            case 7:
                goto Label_00C3;

            default:
                goto Label_00B8;
        }
    Label_007D:
        VB$ResumeTarget = VB$CurrentStatement;
        switch (((VB$ActiveHandler > -2) ? VB$ActiveHandler : 1))
        {
            case 0:
                goto Label_00B8;

            case 1:
                goto Label_0051;
        }
    }
    catch (object obj1) when (?)
    {
        ProjectData.SetProjectError((Exception) obj1);
        goto Label_007D;
    }
Label_00B8:
    throw ProjectData.CreateProjectError(-2146828237);
Label_00C3:
    if (VB$ResumeTarget != 0)
    {
        ProjectData.ClearProjectError();
    }
}



Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

01011011
Avanade
CHICAGO, USA

Član broj: 561
Poruke: 2341
*.messagelabs.net.

ICQ: 45747235
Sajt: www.snailtrail.net


+2 Profil

icon Re: ErrObject Class u VB al ne i u C#26.02.2008. u 17:24 - pre 158 meseci
Hvala ovo mi je trebalo :) Pa ja sam prije koristio na projektima try/catch uglavnom da uradim error handling, ali ono mislio sam da je ovo neki njihov nacin koji mora da se postuje, a posto su mi dali odrijesene ruke, ono samo cu da to pobrisem :)

Hvala mnogo na brzim i efikasnim odgovorima.

vidio sam da je ovo MSIL :)

[Ovu poruku je menjao 01011011 dana 26.02.2008. u 18:41 GMT+1]
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6006



+4618 Profil

icon Re: ErrObject Class u VB al ne i u C#26.02.2008. u 17:49 - pre 158 meseci
nije MSIL, c# je, ali dobijen reverse engineeringom MSIL-a. Alatka koju koristim za te stvari je .NET Reflector, pribavi je. U principu je dobra za analizu koda, ali nije bas za konverziju posto MSIL ne cuva u metadata sve podatke (npr gube se imena lokalnih promenljivih u metodama). Sors to sors konverzija je bolja za ocuvanje takvih stvari.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

01011011
Avanade
CHICAGO, USA

Član broj: 561
Poruke: 2341
*.messagelabs.net.

ICQ: 45747235
Sajt: www.snailtrail.net


+2 Profil

icon Re: ErrObject Class u VB al ne i u C#26.02.2008. u 18:00 - pre 158 meseci
zdravo opet, ma vidio sam pa sam ispravio prije nego sto si mi napisao odgovor. INACE naletio sam na jos jedan COM object Footprint :(

Kako je ovo naporno :)

E da, koristim ja reflector!!!
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6006



+4618 Profil

icon Re: ErrObject Class u VB al ne i u C#26.02.2008. u 18:19 - pre 158 meseci
Ma nije naporno, dobro zezanje ;)

Inace, ErrObject nije COM objekat (cisto radi reference).

Ako imas COM objekat u VBNET projetu onda za njega mora da postoji Interop Referenca u References. INterop wrapperi su u MSILu i mozes neizmenjene da ih koristis iz C# projekta.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

01011011
Avanade
CHICAGO, USA

Član broj: 561
Poruke: 2341
*.messagelabs.net.

ICQ: 45747235
Sajt: www.snailtrail.net


+2 Profil

icon Re: ErrObject Class u VB al ne i u C#26.02.2008. u 18:29 - pre 158 meseci
Ma nije meni problem, zezao bih se ja sa ovim danima da imam vremena. Znas kakvi su amerikanci, hoce da im se napravi od govana pita (od njihovog 10+ godina starog koda koji nije u tiers) da napravis enterprise application, design i da zavrsis front end u nekoliko mjeseci. Od Toga pocinje nervoza :)
 
Odgovor na temu

01011011
Avanade
CHICAGO, USA

Član broj: 561
Poruke: 2341
*.messagelabs.net.

ICQ: 45747235
Sajt: www.snailtrail.net


+2 Profil

icon Re: ErrObject Class u VB al ne i u C#26.02.2008. u 19:20 - pre 158 meseci
vEvo jos sam naletio na nesto sto mi nije jasno pa rekoh da pitam da ne otvaram drugu temu, posto je ovo sve konverzija ovdje :)

znaci ima funkcija koja ocekuje string kao return u VB. i sada ima ovaj statement unutra

Code:
If Not _OpenSpecialtyDB(conn, Me, "FlatFee") Then
                        Return retval
                        Exit Function
                    End If


E sada kako da uradim exit function? kako se ja sjecam u C# da izadjes samo uradis return;

znaci

Code:
if (! (_OpenSpecialtyDB(conn, this, "FlatFee")))
{
                        return retval;
                        return;
                    }


sad mi nije jasno imam dva return stejtmenta ??? Da li je ovo ispravno?
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12705



+4688 Profil

icon Re: ErrObject Class u VB al ne i u C#26.02.2008. u 19:40 - pre 158 meseci
Ne trebaju ti dva return-a, i njima je taj exit function suvisan.
 
Odgovor na temu

01011011
Avanade
CHICAGO, USA

Član broj: 561
Poruke: 2341
*.messagelabs.net.

ICQ: 45747235
Sajt: www.snailtrail.net


+2 Profil

icon Re: ErrObject Class u VB al ne i u C#26.02.2008. u 20:27 - pre 158 meseci
Hvala hvala, jos malo pa sam konvertirao prvu klasu, jos samo 3000 mi je ostalo :) ha ha
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: ErrObject Class u VB al ne i u C#

[ Pregleda: 1588 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

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