Seite 2 von 2

Re: Alternative zu Tailbite?

Verfasst: 09.09.2010 15:37
von mpz
Hi CSHW89,

ich muss gestehen das ich die Funktion protected nicht/kaum benutze da ich in Prozeduren entweder mit globalen Listen arbeite, oder einfach mit pointern. Ich benutze nie in Prozeduren die gleichen Variablennamen die ich in der Hauptpartitur "global" gesetzt habe (wozu auch?!?). Trotz 20 k Programmzeilen hat sich da auch noch kein Fehler eingeschlichen. Ob mich das zu einem schlechten Programmierer macht weiß ich allerdings nicht :( Ich glaube auch nicht das man mit protected Speicherplatz spart.

Gruß Michael

beispiel

Code: Alles auswählen


ProcedureDLL MP_3DCollision (Mesh1,Mesh2)

  ForEach Mesh()
    If Mesh() = Mesh1
        *Mesh1.MeshStruct = Mesh1
        Break
    endif
  next

  ForEach Mesh()
    If Mesh() = Mesh2
        *Mesh2.MeshStruct = Mesh2
        Break
    endif
  next

 ; stehen jetzt schön zur Verfügung
 ; *Mesh1.MeshStruct
 ; *Mesh2.MeshStruct

EndProcedure



Re: Alternative zu Tailbite?

Verfasst: 09.09.2010 15:53
von CSHW89
tja wenn man 'EnableExplicit' verwendet, muss man variablen zuvor deklarieren. und lokale variablen in proceduren deklariert man mit 'Protected', kann sein dass man auch 'Define' verwenden kann, weiß ich nicht, mach ich nie, ich benutz immer 'Protected'. und ich glaube auch viele andere, zumindest in den codes, die hier veröffentlicht wurden, seh ich das immer.
ich schreibs mal gleich im englischen tailbite forum
lg kevin

Re: Alternative zu Tailbite?

Verfasst: 09.09.2010 21:56
von PMV
Es macht dich nicht schlechter, wenn du es nicht verwendest ... es
wird dich aber besser machen, wenn du es verwendest. Und vorallem
aber ist es wichtig, wenn andere Leute deinen Code lesen sollen. So
lang du für dich selber programmierst, ist dein Stiel allerdings unerheblich.
EnableExplicit erspart einem zudem sehr viel Zeit, vorallem bei größeren
Projekten. :wink:

Code: Alles auswählen

ProcedureDLL.i MP_3DCollision (*Mesh1.MeshStruc, *Mesh2.MeshStruc)
  Protected Found = #False

  ForEach Mesh()
    If *Mesh1 = @Mesh()
        Found = #True
        Break
    endif
  next
  If Not Found : ProcedureReturn -1 : EndIf

  Found = #False
  ForEach Mesh()
    If *Mesh2 = @Mesh()
        Found = #True
        Break
    endif
  next
  If Not Found : ProcedureReturn -1 : EndIf

; stehen jetzt schön zur Verfügung
; *Mesh1.MeshStruct
; *Mesh2.MeshStruct

EndProcedure
:D

@CSHW89
Define ist für die Deklaration außerhalb von Prozeduren.
Protected innerhalb von Prozeduren.

MFG PMV