Delphi-Quellcode:
for i := 0 to Bufferlist.Count - 1 do
if Pos('Job:', Bufferlist[i]) <> 0 then
begin
jobIdx := Length(jobArray);
SetLength(jobArray, jobIdx + 1);
jobArray[jobIdx].j_id := jobIdx;
for x := i + 1 to Bufferlist.Count - 1 do
begin
if Pos('Job:', Bufferlist[x]) <> 0 then
break;
if Pos('Oper:', Bufferlist[x]) <> 0 then
begin
a := Pos(';', Bufferlist[x]);
b := PosEx(';', Bufferlist[x], a+1);
if (a <> 0) and (b <> 0) then
begin
//procIdx := Length(jobArray[jobIdx].j_proc);
//SetLength(jobArray[jobIdx].j_proc, procIdx + 1);
//jobArray[jobIdx].j_proc[procIdx] := StrToInt(Copy(Bufferlist[x], a+1, b-a-1));
SetLength(jobArray[jobIdx].j_proc, Length(jobArray[jobIdx].j_proc) + 1);
jobArray[jobIdx].j_proc[High(jobArray[jobIdx].j_proc)] := StrToInt(Copy(Bufferlist[x], a+1, b-a-1));
end;
end;
end;
end;
Mit aussagefähigeren Variablen wären die ganzen verwirrenden Kommentare überflüssig und du würdes nicht ausversehn eine Variable doppelt verwenden.
Dank deiner ordentlichen Einrückng brauchst du auch nicht die ganzen END nochmals zu kommentieren.
> gerade hochgegangen sieht man ja wozu sie gehören.
Wenn du die Indize aus ihren zugehörigen Arrays ableitest, dann müßtest du nicht extra mitzählen.
Sicherheitshalber eine Prüfung, ob die Pos/PosEx auch alle nötigen ";" gefunden haben, kann nicht schaden ... eventuell könnte man im Fehlerfall auch noch was machen, bzw. eine Fehlermeldung ausgeben.
PS: Wenn du dort FOR nutzen würdest, wo es paßt, anstatt mit WHILE rumzukämpfen, dann hätte dich sogar der Compiler auf die doppelte Verwendung hingewiesen.
PSS: eine Schleife würde auch ausreichen
Delphi-Quellcode:
for i := 0 to Bufferlist.Count-1 do
if Pos('Job:', Bufferlist[i]) <> 0 then
begin
jobIdx := Length(jobArray);
SetLength(jobArray, jobIdx+1);
jobArray[jobIdx].j_id := jobIdx;
end
else if Pos('Oper:', Bufferlist[i]) <> 0 then
begin
a := Pos(';', Bufferlist[i]);
b := PosEx(';', Bufferlist[i], a+1);
jobIdx := High(jobArray);
procIdx := Length(jobArray[jobIdx].j_proc);
if (a > 0) and (b > 0) and (jobIdx >= 0) then
begin
SetLength(jobArray[jobIdx].j_proc, procIdx+1);
jobArray[jobIdx].j_proc[procIdx] := StrToInt(Copy(Bufferlist[i], a+1, b-a-1));
end;
end;