Habe wieder ein Verständnisproblemchen mit Zeigern und Strukturen. Es sollen diverse Strukturen per Prozedur verändert werden. Damit ich nicht mehrere Prozeduren brauche für verschiedene Kombinationen zu verarbeitender Strukturen, übergebe ich einfach deren Zeiger an die Prozedur:
Code: Alles auswählen
;Initialisierung, Definitionen usw.
Structure GapStruct ;Die Lücken in den Dateien werden hierin aufgenommen.
Start.l
Stop.l
EndStructure
Global Dim Datei1Gap.GapStruct(200)
Global Dim Datei2Gap.GapStruct(200)
Global Dim Temp1Gap.GapStruct(200)
Global Dim Temp2Gap.GapStruct(200)
Global Dim Temp3Gap.GapStruct(200)
Global Datei1GapNr, Datei2GapNr, Temp1GapNr, Temp2GapNr, Temp3GapNr
Declare.l NegiereGap(*Gap1.GapStruct, Gap1Nr.l, *Gap2.GapStruct, Beginn.l, Ende.l)
;----------------
;Hauptprogramm
Temp1GapNr = NegiereGap(@Datei1Gap(), Datei1GapNr, @Temp1Gap(), i*9500*1024, (i+1)*9500*1024)
;bla bla...
Temp2GapNr = NegiereGap(@Datei2Gap(), Datei2GapNr, @Temp2Gap(), i*9500*1024, (i+1)*9500*1024)
;bla bla
Temp1GapNr = NegiereGap(@Temp2Gap(), Temp2GapNr, @Temp1Gap(), i*9500*1024, (i+1)*9500*1024)
;----------------
;Unterprogramme
;Erwarte sortierte Strukturen!
;In Gap1() stehen Bereichsdefinitionen von fehlenden Daten irgendeiner Datei.
;In Gap2(), was hier erstellt wird, werden Bereichsdefinitionen jener Datei geschrieben,
;die Daten enthalten, aber nur einen Bereich von Beginn bis Ende umfassend.
Procedure.l NegiereGap(*Gap1.GapStruct, Gap1Nr.l, *Gap2.GapStruct, Beginn.l, Ende.l)
Gap2Nr.l = 0
For i.l=-1 To Gap1Nr
If i=-1 : Db=0 : Else : Db=*Gap1(i-1)\Stop : EndIf
If i=Gap1Nr : De=$7fffffff : Else : De=*Gap1(i)\Start : EndIf
If Db<Ende And De>Beginn
If Db<Beginn : *Gap2(Gap2Nr)\Start=Beginn : Else : *Gap2(Gap2Nr)\Start=Db : EndIf
If De>Ende : *Gap2(Gap2Nr)\Stop=Ende : Else : *Gap2(Gap2Nr)\Stop=De : EndIf
Gap2Nr + 1
EndIf
Next i
ProcedureReturn Gap2Nr ;Rückgabe der Größe der erstellten Struktur
EndProcedure
Code: Alles auswählen
Procedure.l NegiereGap(Array *Gap1.GapStruct, Gap1Nr.l, Array *Gap2.GapStruct, Beginn.l, Ende.l)
Schubst mich bitte 'mal jemand von der Leitung, auf der ich gerade stehe?

Grüße - WPo