Hallo Daywalker. Danke für deinen Tipp. Die Funktion high() kannte ich noch gar nicht.
Meine erste Frage hat sich auch geklärt. Ich war gestern anscheinend einfach zu müde. Ich hatte bei der Zeile, welche im unten stehenden Code
x := i+1 das "+1* vergessen und deswegen wurde natürlich immer gleich im ersten Durchlauf der darunterstehenden Schleife ein "Job:" gefunden...
Delphi-Quellcode:
jobCount := 0; // Jobanzahl zu Beginn = 0
i := 0; // Schleifenzähler für while-Schleife
while i < Bufferlist.Count - 1 do
begin
if Pos('Job:', Bufferlist[i]) <> 0 then // wenn in Zeile[i] Job vorhanden...
begin;
c := 0; // Arrayzähler = 0
SetLength(jobArray, jobCount+1);
jobArray[jobCount].j_id := jobCount-1;
x := i+1;
a := Bufferlist.Count;
while x < a do // von Zeile i bis zur nächsten Zeile mit Job, oder Dateiende
begin
if Pos('Job:', Bufferlist[x]) <> 0 then
a := x; // Schleifenenabbruch festlegen
if Pos('Oper:', Bufferlist[x]) <> 0 then // falls Oper in Zeile
begin
a := PosEx(';', Bufferlist[x], 1);
b := PosEx(';', Bufferlist[x], a+1);
SetLength(jobArray[jobCount].j_proc, c+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
Für Codeverbesserungen bin ich natürlich immer offen, aber zumindest läuft es so
Danke nochmals
Franz
Edit(13.02. 14:42) - Das Einlesen der Prozesszeit ins Array ist noch nicht korrekt. Ich werde die obige Funktion später nochmal editieren.