Novo

Forum kao aplikacija na telefonu

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

  • 10 odgovora
  • 2.692 pregleda

Najnovija ↓

ErrObject Class u VB al ne i u C# 26.02.2008. u 17:30 · pre 227 meseci #1
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
Re: ErrObject Class u VB al ne i u C# 26.02.2008. u 17:55 · pre 227 meseci #2
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.
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: ErrObject Class u VB al ne i u C# 26.02.2008. u 18:12 · pre 227 meseci #3
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();
    }
}


Potpis
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ć
Re: ErrObject Class u VB al ne i u C# 26.02.2008. u 18:24 · pre 227 meseci
izmenjeno 1 put, poslednji put 01011011 26.02.2008. u 18:41
  1. 0101101126.02.2008. u 18:41zapis iz teksta poruke
#4
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 :)
Re: ErrObject Class u VB al ne i u C# 26.02.2008. u 18:49 · pre 227 meseci #5
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.
Potpis
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ć
Re: ErrObject Class u VB al ne i u C# 26.02.2008. u 19:00 · pre 227 meseci #6
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!!!
Re: ErrObject Class u VB al ne i u C# 26.02.2008. u 19:19 · pre 227 meseci #7
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.
Potpis
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ć
Re: ErrObject Class u VB al ne i u C# 26.02.2008. u 19:29 · pre 227 meseci #8
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 :)
Re: ErrObject Class u VB al ne i u C# 26.02.2008. u 20:20 · pre 227 meseci #9
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?
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme