Zitat:
2. An welcher Stelle kann ich einsteigen, wenn ich nur z.B. die Werte zwischen 200.000 und 300.000 berechnet haben will?
Delphi-Quellcode:
if ValueValid then
begin // falls in Value eine gültige Zahl war diese in Avg/Dev kummulieren
Inc(ValueCount);
Value := Value * ValueSign;
// hier nur die 100000'te bis 200000'te Zahl in berechnung berücksichtigen
if (ValueCount >= 100000) and (ValueCount < 200000) then
begin
Avg := Avg + Value;
Dev := Dev + Sqr(Value);
end else
if (ValueCount = 200000) then
begin // hier bei 200000 Zahl die realen werte ausrechnen
Dev := (Dev * (200000-100000) - Sqr(Avg)) / (Sqr((200000-100000)) - (200000-100000));
Avg := Avg / (200000-100000);
end;
ValueValid := False;
Value := 0;
ValueSign := +1;
end else
Zitat:
Kann ich CurChar und EndChar gleich zu Beginn die Positionen zuweisen?
Nein das geht nicht, es sei denn alle Zahlen verbrauchen exakt die gleiche Anzahl an Ziffern. Also angenommen bei einer 3 stelligen Zahl wären 2 Leerzeichen davor = 5 zeichen, bei einer 1 stelligen Zahl also 4 Leerzeichen == 5 zeichen, ergo alle Zahlen belegen 5 Bytes in der Datei, dann geht das direkt zu poitionieren. Statt aber CurChar etc. zu verändern einfach mit Stream.Position := 5 * 100000 auf die 100000'te Zahl positionieren und dann valueCount nur bis 100000 hochzählen lassen.
Gruß Hagen