-> Hier kostenlos registrieren
Code:
FUNCTION FC1002 : VOID
VAR_INPUT
ToCheckUID: ARRAY[0..31]OF Byte;
Assignment_DB_Number: BLOCK_DB;
End_var
VAR_IN_OUT
Start: BOOL;
Assigment_Number: INT;
DB_Number: INT;
Exist: BOOL;
END_VAR
VAR_TEMP
DB_Number_Temp: dWord;
I, K: INT;
EQ: BOOL;
DoExit: BOOL;
Temp_String1: STRING[32];
atTemp_String1 AT Temp_String1 : struct
Header : array [0..1] of Byte ;
Data : array [0..31] OF Byte;
end_struct ;
Temp_String2: STRING[32];
atTemp_String2 AT Temp_String2 : struct
Header : array [0..1] of Byte ;
Data : array [0..31] OF Byte;
end_struct ;
Quell_DW: INT;
END_VAR
IF Start THEN
EQ := False;
DB_Number := 0;
Exist := False;
atTemp_String1.Data := ToCheckUID;
atTemp_String1.Header[0] := 32 ; atTemp_String1.Header[1] := 32 ;
DoExit := False;
Quell_DW:=0;
i:=0;
k:=0;
Assigment_Number:=0;
FOR I := 0 TO 1799 DO
Quell_DW := (34 * I);
FOR K := 0 TO 31 DO
[B][I][COLOR=#ff0000]atTemp_String2.Data[K] :=Assignment_DB_Number.DB[Quell_DW + K]; [/COLOR]
[/I][/B]
END_FOR;
atTemp_String2.Header[0] := 32 ; atTemp_String2.Header[1] := 32 ;
EQ := EQ_STRNG(S1 := Temp_String1,S2 := Temp_String2);
IF EQ THEN
Assigment_Number:= Quell_DW;
DB_Number_Temp:=Assignment_DB_Number.DW[Quell_DW + 32];
DB_Number:=DWORD_TO_INT(DB_Number_Temp);
Exist := True;
Start := False;
DoExit := True;
EXIT;
END_IF;
IF DoExit THEN
EXIT;
END_IF;
END_FOR;
Start := False;
DoExit := False;
END_IF;
END_FUNCTION
Bei der rot gemachten zeile wird der bereichslängenfehler angegeben. wenn man die hilfe zum fehler anklickt, erscheint irgendetwas weil es über 65.535
hinahinaus gegangen ist. 34x1800 ist aber nur 61200.
hat jemand einen tipp ?