Seite 2 von 2
Verfasst: 03.03.2009 20:43
von cxAlex
Aber wenn ich eine Fußgesteuerte Schleife verwende hab ich mindestens 1* die Verzögerung drinnen.
// Edit: Na gut, so ists akzeptabel:
Code: Alles auswählen
; Verwenden wie SendNetworkData
Procedure SendNetworkData_Safe(ConnectionID, *MemoryBuffer, Lenght, MaximumRetrys = 3, Delay = 10)
Protected Retrys, RtVar, OffSet
Repeat
RtVar = SendNetworkData(ConnectionID, *MemoryBuffer + OffSet, Lenght-OffSet)
If (RtVar + OffSet)<Lenght And Retrys<MaximumRetrys
If RtVar> -1
OffSet + RtVar
EndIf
Retrys + 1
Delay(Delay)
Else
Break
EndIf
ForEver
ProcedureReturn RtVar
EndProcedure
Verfasst: 03.03.2009 21:18
von Little John
Eine kopfgesteuerte Schleife in der Art wie ich's oben gemacht habe finde ich nichts Ungewöhnliches. Ein Klassiker in dieser Hinsicht ist wohl sowas:
Code: Alles auswählen
name = FindFirstFile("*.txt")
While name <> ""
; do this and that
name = FindNextFile()
Wend
Nur dass ich nicht zwei verschiedene Funktionen aufgerufen habe, sondern 2x die selbe ....
Gruß, Little John
Verfasst: 03.03.2009 21:24
von ts-soft
Wenns abzusehen ist, was günstiger ist, sollte man es auch nutzen!
Verfasst: 03.03.2009 21:25
von PMV
Wie war das noch mit dem Programmiererführerschein und so?

Verfasst: 03.03.2009 21:36
von Little John
ts-soft hat geschrieben:Wenns abzusehen ist, was günstiger ist, sollte man es auch nutzen!
Dieser Code ist nicht mit dem von mir geposteten äquivalent. cxAlex hatte das oben schon näher erläutert.
Gruß, Little John
Verfasst: 03.03.2009 21:48
von PMV
Genau, deswegen wird hier auch keine kopfgesteuerte Schleife, sondern
eine fußgesteuerte Schleife bevorzugt verwendet.
So wie cxAlex es nun zuletzt gepostet hat hab ich das auch gemacht.

Little Johns kopfgesteuerte Schleife ist zwar nicht zwingend verkehrt, aber
es ist auch nicht das optimalste.
MFG PMV
Verfasst: 03.03.2009 21:57
von Little John
PMV hat geschrieben:Genau, deswegen wird hier auch keine kopfgesteuerte Schleife, sondern eine fußgesteuerte Schleife bevorzugt verwendet.

Meine Code hat
exakt die Programmlogik von cxAlex' Code nachgeahmt, und genau darum ging es mir in dem Moment vor allem.
Abgesehen davon unterscheiden sich die Präferenzen, wie hier offensichtlich ist.
PMV hat geschrieben:Little Johns kopfgesteuerte Schleife ist zwar nicht zwingend verkehrt, aber es ist auch nicht das optimalste.
Nee, "das optimalste" bestimmt nicht.
Gruß, Little John
Verfasst: 04.03.2009 01:10
von STARGÅTE
Also ich würde es so machen um das Else noch zu ersparen:
Code: Alles auswählen
Repeat
RtVar = SendNetworkData(ConnectionID, *MemoryBuffer + OffSet, Lenght-OffSet)
If (RtVar + OffSet)<Lenght And Retrys<MaximumRetrys
If RtVar> -1
OffSet + RtVar
EndIf
Retrys + 1
Delay(Delay)
Continue
EndIf
Until #True