Pomagajte Deadlock izuzetak...
Prikazujem rezultate 1 do 9 od 9

Tema: Pomagajte Deadlock izuzetak...

  1. #1
    Početnik
    Učlanjen
    04.08.2007.
    Pol
    ženski
    Poruke
    25
    Reputaciona moć
    0

    Podrazumevano Pomagajte Deadlock izuzetak...

    Pozdrav svima na forumu...
    Evo jedno pitanje za vas, bas mi je hitno...
    Kako se resava problem Deadlock izuzetka u Delphiu?
    Na primer, Pera sa svog klijentskog racunara posmatra neki zapis. Drugi korisnik u mrezi npr. Mika taj isti zapis izmeni na svom klijentskom racunaru.
    Pera neznajuci da je Mika, taj zapis izmenio (posto njegov data set nije osvezen),
    pokusava da izmeni, i generise se Deadlock izuzetak.
    Meni treba da u try ... except bloku razlikujem izuzetke.
    Na primer u slucaju Deadlocka ide jedna poruka (MessageDlg('Zapis je vec izmenjen na drugom racunaru',...)),
    u slucaju nekog drugog izuzetka ide neka druga poruka, u slucaju treceg neka treca poruka itd...
    Da da napomenem RDBMS je Interbase. Hajde ljudi pomagajte, stvar je hitna, hvala unapred...



  2. #2
    Ističe se
    Učlanjen
    01.07.2004.
    Pol
    muški
    Lokacija
    Nis
    Poruke
    2.774
    Reputaciona moć
    78

    Podrazumevano Re: Pomagajte Deadlock izuzetak...

    procedure TForm1.Button1Click(Sender: TObject);
    var
    fileStream: TFileStream;
    begin
    try
    (* Attempt to open a non-existant file *)
    fileStream := TFileStream.Create('NOT_THERE.FILE', fmOpenRead);
    (* Process the file contents... *)
    fileStream.Free;
    except
    on EFOpenError do ShowMessage('EFOpenError Raised');
    else
    ShowMessage('Exception Raised');

    end;
    end;


    Evo ti primera iz Delphijevog helpa, koji pokazuje kako da razlikujes izuzetke.
    Čiste ruke
    Hladna glava
    I vatreno srce

  3. #3
    Početnik
    Učlanjen
    04.08.2007.
    Pol
    ženski
    Poruke
    25
    Reputaciona moć
    0

    Podrazumevano Re: Pomagajte Deadlock izuzetak...

    Ja sam pokusala nesto slicno ali nista nisam dobila...
    Evo koda:
    uses DBTables;
    ...
    procedure TForm1.Button3Click(Sender: TObject);
    var
    E: EDBEngineError;
    begin
    try
    // parametri koje saljem stored proceduri na serveru
    proc2.ParamByName('id_korisnika_1').AsString:=Edit 1.Text;
    proc2.ParamByName('ime').AsString:=Edit2.Text;
    proc2.ParamByName('prezime').AsString:=Edit3.Text;
    proc2.ParamByName('jmbg').AsString:=Edit4.Text;
    proc2.ExecProc;

    if IBTransaction1.InTransaction = True then
    begin
    IBTransaction1.Commit;
    end;

    except

    if E.ErrorCount = 10255 then // za ovaj broj sam nasla negde na netu da pripada deadlock izuzetku
    showMessage('Zapis je izmenjen na drugom racunaru');

    end;

    Eto tako medjutim nista se ne desava i dalje je Deadlock, jel znas mozda bas za taj izuzetak kako da ga obradim, posto nisam sigurna da je ovaj broj ispravan?

  4. #4
    Ističe se
    Učlanjen
    01.07.2004.
    Pol
    muški
    Lokacija
    Nis
    Poruke
    2.774
    Reputaciona moć
    78

    Podrazumevano Re: Pomagajte Deadlock izuzetak...

    Nemoj da gledas na netu koji su kodovi gresaka, nego pogledaj koju ti gresku podigne kada izazoves deadlock. Nisam siguran da treba ovako da koristis promenljivu E. Bolje idi na

    ...
    except
    on EFOpenError do ShowMessage('EFOpenError Raised');
    else
    ShowMessage('Exception Raised');

    end;

    Samo proveri tacno koju gresku ti deadlock podize, i nju uhvati u except sekciji.
    Čiste ruke
    Hladna glava
    I vatreno srce

  5. #5
    Početnik
    Učlanjen
    04.08.2007.
    Pol
    ženski
    Poruke
    25
    Reputaciona moć
    0

    Podrazumevano Re: Pomagajte Deadlock izuzetak...

    Puno hvala na pomoci, mislim da sam elegantno resila problem.
    Evo mog koda:

    var
    greska:integer;

    try
    ...
    except


    on E:EIBInterBaseError do
    begin
    greska:= EIBInterBaseError(E).IBErrorCode;

    case greska of
    335544336 : showMessage('GRESKA: Zapis je vec izmenjen na drugom racunaru.'); // ovo je za deadlock
    335544344 : showMessage('GRESKA: Nepostojeca baza.');
    335544569 : showMessage('GRESKA: Nepoznata tabela.');
    335544472 : showMessage('GRESKA: Neispravno korisnicko ime ili lozinka.');
    end;

    end;

  6. #6
    Zainteresovan član
    Učlanjen
    18.03.2004.
    Poruke
    122
    Reputaciona moć
    52

    Podrazumevano Re: Pomagajte Deadlock izuzetak...

    Sve je to lepo, ali kako je ovo deadlock? Doduse, mozda ovo nije ono na sta ja mislim...
    Razum je najlepsi poklon i najvece iskusenje koje jedan zivot moze da dobije od bogova.
    Ja :D

  7. #7
    Iskusan codemaker (avatar)
    Učlanjen
    05.04.2004.
    Lokacija
    Beograd
    Poruke
    6.416
    Reputaciona moć
    0

    Podrazumevano Re: Pomagajte Deadlock izuzetak...

    Opisan problem nije "deadlock". Radi se o klasicnom problemu na mrezi kada dva korisnika menjaju isti zapis, pa jedan zavrsi malo ranije pre prvog.
    Sto se tice "deadlocka", postoji cela nauka o svemu tome pa se to ne moze tek tako prici. Ima tu tehnika i provera i treba tom problemu pristupiti veoma ozbiljno. generalno, ako ce se neki zapis menjati, jedna od varijanti je da se ceo zapis zakljuca, tako da ga niko drugi nece mozi menjati dok se ne ortkljuca, bio izmenjen ili ne. Ako je bio menjan, obavezno osveziti bazu.
    Druga je prica, kako ce ostali korisnici videti izmene u databaze. I to se resava na vise nacina. Ne moze se ocekivati da ce korisnik samo gledajuci tekuci slog, odjednom viodeti izmenu ako se nista drugo u kodu nije pripremilo i odradilo...
    Ima ti jios, nemam vremena da pisem, nalazim se u GR na odmoru pa ne bih da triosim dragoceno vreme

    Uglavnom, opisan probvlem nije "deadlock"

  8. #8
    Početnik BARON1985 (avatar)
    Učlanjen
    28.08.2003.
    Pol
    ženski
    Poruke
    47
    Reputaciona moć
    0

    Podrazumevano Re: Pomagajte Deadlock izuzetak...

    STA JE TO DEADLOCK?

  9. #9
    Primećen član maksvel (avatar)
    Učlanjen
    30.06.2004.
    Pol
    muški
    Poruke
    778
    Reputaciona moć
    57

    Podrazumevano Re: Pomagajte Deadlock izuzetak...

    To je situacija u kojoj dva ili više uređaja (ili procesa, niti) čekaju na jedan isti resurs, koji nikako da se oslobodi. Pogledaj http://en.wikipedia.org/wiki/Deadlock
    Jako bitan problem kod operativnih sistema i multithreading programiranja.
    Poslednji put ažurirao/la maksvel : 18.08.2007. u 15:09
    Let the boy try

Slične teme

  1. Hrvatska novi izuzetak na Balkanu???
    Autor StevanJ u forumu Politika
    Odgovora: 87
    Poslednja poruka: 07.03.2008., 12:01
  2. izuzetak koji potrvdjuje pravilo...
    Autor marco3dx u forumu Ljubav i seks
    Odgovora: 0
    Poslednja poruka: 16.01.2006., 01:33
  3. pomagajte......
    Autor bitter end u forumu Škole
    Odgovora: 3
    Poslednja poruka: 02.04.2004., 23:58

Pravila za slanje poruka

  • Ne možete kreirati novu temu
  • Ne možete poslati odgovor
  • Ne možete dodati priloge
  • Ne možete prepraviti svoju poruku
  •