Einzelnen Beitrag anzeigen

markusj

Registriert seit: 9. Dez 2005
Ort: Kandel
408 Beiträge
 
#5

Re: Mittelwert und Standardabweichung

  Alt 21. Apr 2006, 23:05
Vorschlag: Du lagerst die Blöcke nicht in Arrays of Char, sondern, komplett gesehen, in einem Array of String, was ja fast das gleiche ist ...
Aber, du analysierst beim einlesen gleich, ob das Zeichen ein ' ' ist, wenn ja, schreibst dus einfach nicht in den String ...

Pseudocode:

Delphi-Quellcode:
var strings : array of string;
i := 0;
setlength(strings,1,1);
repeat
 blockread(datei, buf, 1);
 if buf <> ' then
  begin
  setlength(strings,length(strings+1);
  setlength(strings[i],length(strings[i]+1);
  strings[i,c] := buf;
  inc(c);
  end else
  begin
  inc(i);
  c := 1;
  end;
 until eof(datei);
Dann hast du ein dynamisches Array mit allen String-Ketten, die du dann einfach per StrToInt umwandeln kannst.

mfG

Markus

EDIT: Danke roter Kasten, ich habs gesehen ... eine Anmerkung, mein Code verhindert das auftreten von Leerzeichen in den Strings von Anfang an, das erspart eine Performanceaufwändige, doppelte Berarbeitung der Strings.
Was evtl. Leistung frisst, ist das ständige setlength();, da evtl. jedes Mal Speicher alloziiert wird (schreibt man das so?). Man könnte im Voraus eine Länge von z.B.5 für einen Teilstring und 1000 für das Dynamsiche Array verlangen und bei überschreitung dieser Grenze dann einen weiteren Packen drauflegen.
Am Ende wird geprüft, welche Strings nicht enthalten und diese werden dann rausgeschnitten.

EDIT2: Noch was ... auch wenns auf den ersten Blick schwieriger scheint ... du färst mit TFileStreams und TMemoryStreams besser als mit Files ... such mal danach!
Markus
  Mit Zitat antworten Zitat