Ich habe grade sage und schreibe eine Stunde nach dem Fehler in der Schleife gesucht:
Die Schleife funktioniert so nicht, da die Variable a zweimal benutzt wird. Einmal um die Position des Semikolons im String auszulesen und dann nochmal als Endbedingung für die while-Schleife. Klappt so natürlich nicht...
Und da mir der Fehler erst aufgefallen ist, als ich schon ne andere Schleife geschrieben hatte, kann ich jetz hier noch eine zweite Alternative anbieten:
Delphi-Quellcode:
while i < Bufferlist.Count - 1 do
begin
if Pos('Job:', Bufferlist[i]) <> 0 then // wenn in Zeile[i] Job vorhanden...
begin;
//ShowMessage(Bufferlist[i]);
SetLength(jobArray, jobCount+1);
SetLength(jobArray[jobCount].j_proc, wcCount-1);
x := i+1;
c := 0;
while (Pos('Job:', Bufferlist[x]) = 0) and (x < Bufferlist.Count - 1) do
begin
if Pos('Oper:', Bufferlist[x]) <> 0 then // falls Oper in Zeile
begin
a := PosEx(';', Bufferlist[x], 1);
b := PosEx(';', Bufferlist[x], a+1);
jobArray[jobCount].j_proc[c] := StrToInt((Copy(Bufferlist[x], a+1, b-a-1))); // Kopiere Prozesszeit in Array
Inc(c); // Arrayzähler um eins erhöhen
end; // if
Inc(x);
end; // while
Inc(jobCount); // Jobanzahl um eins erhöhen
SetLength(jobArray, jobCount-1);
end; // if
Inc(i);
end; // while
Jetz sag mir bitte noch einer warum ich immer ne Zugriffsverletzung bekomme, wenn ich in einer anderen Methode jobarray[0].j_proc[0] auslese