Skoči na vsebino

IPB




Slika

Delphi In Goto


Odgovorov v temi: 8

#1 pmatvos

pmatvos

    Igračar

  • Members
  • 105 objav

Objavljeno 05 april 2012 - 13:36

Znanima me če se da z goto stavkom skočiti iz ene procedure v drugo, ter kje in kako ga deklariraš. (skoki znutraj procedure mi delajo brez težav a skoka v drugo proceduro mi ne uspe izvesti).

Hvala.

P.S. Aja obe procedure med katerima bi rad izvedel skok sta na ister foromu.

#2 linuxboy

linuxboy

    Raziskovalec

  • Members
  • 47 objav
  • Spol:Moški

Objavljeno 16 april 2012 - 08:43

Uporaba goto je zelo slaba praksa...raje kliči proceduro.

#3 Matej

Matej

    Pomagač

  • Members
  • 453 objav
  • Spol:Moški

Objavljeno 16 april 2012 - 09:54

http://www.delphibasics.co.uk/RTL.asp?Name=Goto&ExpandCode1=Yes

Uporaba goto stavkov res ni prijetna, če jih imaš 50, samo, če bo pa enega pa tudi ni panike :)

#4 xfirestorm

xfirestorm

    /dev/null

  • Moderators
  • 3 626 objav
  • Spol:Moški
  • Kraj:Murska Sobota
  • Interesi:Airsoft

Objavljeno 16 april 2012 - 10:48

Če moraš uporabiti GOTO potem imaš t.i. "design flaw".

#5 pmatvos

pmatvos

    Igračar

  • Members
  • 105 objav

Objavljeno 17 april 2012 - 07:46

La La La :D, vem vse to nam je Pehta (Alenka Pačnik Gabrovec) celo sredno šolo težila, da je uporaba tega strogo prepovedana. Klic procedure ne pride v poštev. Imam en zelo specifičen primer kjer so slabosti goto stavka v bistvo prednosti, tako da bi vseeno prosil če kdo ve kako se da goto uporabljat globalno se pravi skok iz ene procedure v drugo.

#6 linuxboy

linuxboy

    Raziskovalec

  • Members
  • 47 objav
  • Spol:Moški

Objavljeno 17 april 2012 - 07:49

Ne vidim razloga, da ne bi mogel procedure klicati...

#7 xfirestorm

xfirestorm

    /dev/null

  • Moderators
  • 3 626 objav
  • Spol:Moški
  • Kraj:Murska Sobota
  • Interesi:Airsoft

Objavljeno 17 april 2012 - 08:08

GOTO je katastrofalen že če moraš preskakovati znotraj ene funkcije/procedure, kaj šele da moraš preskakovati iz procedure v proceduro.

Pa razloži svoj problem, pokaži kodo, pa bomo videli kaj se da narediti. ;)

#8 pmatvos

pmatvos

    Igračar

  • Members
  • 105 objav

Objavljeno 17 april 2012 - 10:26

Gre se za zaščito za aplikacijo, ki jo razvijam. zaščita deluje super. Ko sem jo testiral je nikakor nisem mogel razbiti razen tako da sem z namensko aplikacijo prišel do izvorne kode, no in če prideš do kode je zadeva preveč preprosta za razbrat, zato imam željo z uporabo goto stavkov zadevo konkretno zakomplicirati, jaz se bom znašel todi z 100 skoki ker imam svoj sistem označevanja, ki temelji na delu(Dominic O'Brien-a) nekdo drug pa bo imel delo konkretno oteženo.. Kaj več pa žal nemorem povedat, ker če vse razkrijem zadeva nebo več uporabna. Tako da bi še 1x prosil če kdo ve kako uporabiti goto globalno.
Hvala

#9 xfirestorm

xfirestorm

    /dev/null

  • Moderators
  • 3 626 objav
  • Spol:Moški
  • Kraj:Murska Sobota
  • Interesi:Airsoft

Objavljeno 17 april 2012 - 11:06

Potem imaš pa "design flaw" že pri izbiri programskega jezika. :)
Delphi se da "dekompajlat" oz. se da vse dekompajlat, ampak recimo C in C++ imata nekoliko bolj kompleksne algoritme za kompajlanje programa in ju je zato tudi težje(oz. nemogoče) spraviti nazaj v originalno obliko.

http://delphi.about..../goto_label.htm
Predvsem ta del dobro preberi:

Luckily, even though Goto can be used for bad ideas, there are some restrictions in using Goto:

  • You can "Goto" only inside the same scope block.
  • You cannot "Goto" out of a function of procedure.
  • You cannot jump into or out of a try/finally or try/except block.


Oz. pozabi na skoke z GOTO iz ene proceduro v drugo. :)
Sploh bila bi to zelo slaba praksa če bi se to dalo, ker vsaka(skoraj) procedura ima neke parametre, katere z GOTO ne moreš podati.

Ker pa vidim da si trdno prepričan da to hočeš, lahko pa pokličeš proceduro v katero hočeš skočiti, ji podaš neki parameter z katerim poveš kam mora v sami proceduri skočiti in potem tam uporabiš GOTO.



Dodaj odgovor



  


0 član(ov) bere to temo

0 članov, 0 gostov, 0 anonimnih uporabnikov