Seite 2 von 3

Verfasst: 10.09.2007 22:40
von ZeHa
Ich hab nicht gesagt, daß man es so machen muß und ich fordere auch nichts :roll:

Aber daß es zumindest gehen müßte, ist doch auch gut zu wissen, wo ist denn das Problem? Immerhin schreibt Dieter, daß er Angst kriegt ;) also ist es doch berechtigt, es auch mit Bordmitteln zu machen, wenn es möglich ist. Und Funktions-Pointer (also nix mit GOTO) sind ebenfalls praktisch und auch in Hochsprachen noch gern gesehen.

Verfasst: 10.09.2007 23:38
von Froggerprogger
:D

Code: Alles auswählen

Macro Goto(x)
  !JMP[v_#x]
EndMacro

var = ?mark2
Goto(var) ; mit runden Klammern indirekter Sprung zu Adresse mit Wert in 'var'
End

mark1:
Debug 1
End

mark2:
Debug 2
Goto mark1 ; ohne Klammern normaler Sprung zu Sprungmarke namens 'mark1'
End
So, nu gehts ja fast auch ohne Assembler...

Verfasst: 10.09.2007 23:51
von Kaeru Gaman
> mit reinen PB-Sprachmitteln

Code: Alles auswählen

Procedure Dingens( Nr.l)
  Select Nr
    Case 1
      Bla
    Case 2
      Blubb
    Case 3
      Schnarch
  EndSelect
EndProcedure

Verfasst: 11.09.2007 06:40
von ZeHa
Bla, Blubb und Schnarch sind keine PB-Sprachmittel!!!!1!1!!!1111!!11.5

Verfasst: 11.09.2007 09:44
von gnasen
ZeHa hat geschrieben:Bla, Blubb und Schnarch sind keine PB-Sprachmittel!!!!1!1!!!1111!!11.5
das sagst du jetzt erst??? und ich wunder mich, warum nie eins meiner Programme ans laufen kam ;)

Verfasst: 11.09.2007 15:16
von hardfalcon
Mich beschleicht das Gefühl, das ganze hat mit dem nächsten Contest (Stichwort "Crackme") zu tun... Bei sowas muss man halt zuweilen auch mal den breitgetretenen Pfad der Hochsprachen verlassen... <)

Verfasst: 11.09.2007 20:56
von GreyEnt
Jungs habt euch wieder lieb.

Tut mal schön durch die Hose atmen. 8)

Es war nur so eine Frage. Nun weiss ich das es nicht geht. Jedenfalls nicht so wie ich es wolte. Also Tread löschen bevor sich PureBasic in zwei Lager teilt. :)

Verfasst: 11.09.2007 21:03
von PMV
Dieter Platzke hat geschrieben:Also Tread löschen bevor sich PureBasic in zwei Lager teilt. :)
:lol:

:mrgreen:
1. PureBasic kann sich nicht teilen
2. das Forum hier ist schon geteilter Meinung
3. Thread löschen würde im Fall der Fälle kontraproduktiv

8)

MFG PMV

Verfasst: 11.09.2007 21:04
von edel
Vielleicht so ?

Code: Alles auswählen

PrototypeC Proc() 

proc = 3
Goto program_start

Proc1:		
	Debug "call Proc1"
	Return 

Proc2:
	Debug "call Proc2"
	Return 

Proc3:
	Debug "call Proc3"
	Return 


program_start:

Select proc
	Case 1
		Test.Proc = ?Proc1		
	Case 2
		Test.Proc = ?Proc2
	Case 3
		Test.Proc = ?Proc3
EndSelect

Test()
Statt "?Proc1" usw , kann man natuerlich auch irgendwelche
Variablen einsetzen. Hauptsache ein Zeiger auf eine Function wird
uebergeben.

Verfasst: 11.09.2007 21:57
von NicTheQuick
Ist das böse, oder kann da nichts passieren?

Code: Alles auswählen

Prototype Jump()

Define a.l
Define Go.Jump

Go = ?mark1
Debug go()
Go = ?mark2
Debug go()
Go = ?mark3
Debug go()

End

mark1:
  Debug "Mark 1"
  !MOV Eax, 123
Return

mark2:
  Debug "Mark 2"
  !MOV Eax, 456
Return

mark3:
  Debug "Mark 3"
  !MOV Eax, 789
Return
:mrgreen: