Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Datei auswerten (https://www.delphipraxis.net/29430-datei-auswerten.html)

motu 9. Sep 2004 12:51

Re: Datei auswerten
 
Zitat:

Zitat von MrSpock
Ich würde die Datei Zeilenweise über ein TextFile

Bei
Delphi-Quellcode:
      ResDatei: TextFile;
...
      Readln(Logdatei, Resdatei);
Bekomm ich immer nen Typen konflikt. :wall:

wie sagt ich dann Delphi das es in ganz bestimmten Spalten suchen soll?

MrSpock 9. Sep 2004 13:30

Re: Datei auswerten
 
Hallo Motu,

versuch's mal so:
Delphi-Quellcode:
var
  line: String;
  LogDatei: Textfile;
begin
  AssignFile(LogDatei, Opendialog1.FileName);
  Reset(Logdatei);
  while not Eof(Logdatei) do
  begin
      Readln(logdatei, line);
      LineAuswerten(line)
  end;
end;

motu 9. Sep 2004 13:33

Re: Datei auswerten
 
Zitat:

Zitat von MrSpock
Hallo Motu,

Delphi-Quellcode:
      LineAuswerten(line)

Und was muß in die procedure LineAuswerten? Außerdem sind meine Daten ja da noch nicht im Array.

fiasko 9. Sep 2004 13:49

Re: Datei auswerten
 
Zitat:

Zitat von motu
Zitat:

Zitat von MrSpock
Hallo Motu,

Delphi-Quellcode:
      LineAuswerten(line)

Und was muß in die procedure LineAuswerten? Außerdem sind meine Daten ja da noch nicht im Array.

Das mit dem Array ist IMHO Quark, denn du brauchst die Daten ja nur einmal?! Die LineAuswerten ist die magische Funktion die du noch selber schreiben mußt. Die muß eigentlich nur mit MrSpock's vorgeschlagenem HoleFeld überprüfen ob es eine gültige Zeile ist (also alle 3 Werte >10 oder wie das war...).

motu 9. Sep 2004 13:53

Re: Datei auswerten
 
Zitat:

Zitat von fiasko
Das mit dem Array ist IMHO Quark, denn du brauchst die Daten ja nur einmal?!

Ne. Das ist ja nur der erste Schritt. Dann muß ich die Zeilennummern speichern, um dann in fast allen Spalten auf Grundlage der betreffenden Zeilen meine Berechnungen zu machen. Ich denke, wenn ich die Daten in ein Array packe ist das schon gut.

fiasko 9. Sep 2004 13:56

Re: Datei auswerten
 
Wieso machst du das nicht gleich während des auslesens? Zur Berechnung brauchst du doch immer nu die 3 Zahlen einer Zeile? Dann gibt es keinen Grund den Speicher damit vollzuhauen.

motu 9. Sep 2004 14:02

Re: Datei auswerten
 
Zitat:

Zitat von fiasko
Wieso machst du das nicht gleich während des auslesens? Zur Berechnung brauchst du doch immer nu die 3 Zahlen einer Zeile? Dann gibt es keinen Grund den Speicher damit vollzuhauen.

Ich weiß nicht ob wir aneinander vorbeireden und gebe offen zu das mein Delphiwissen zu Null tendiert. In der Datei sollen die drei Spalten als Referenzspalten dienen. Anhand dieser Spalten weiß ich, wo in den anderen Spalten interessante Werte sind. Wenn also die Spalten dort in aufeinanderfolgenden Zeilen Werte größer 10 sind, weiß ich, das ich in den anderen Spalten den Mittelwert/Stdabw. dieser Zeilen bilden muß. wenn dann ziwschendurch das Kriterium (Wert>10) nicht mehr erfüllt ist, sollen die nächsten zusammenhängenden Zeilen die dem Kriterium entsprech für eine neue Berechnung genutzt werden.

MrSpock 9. Sep 2004 14:47

Re: Datei auswerten
 
Hallo Motu,

wenn du die Datei zeilenweise einliest, musst du die Zeile in ihre Bestandteile zerlegen. Dafür hatte ich die Prozedur vorgeschlagen. Besser wäre sogar eine Function:

Delphi-Quellcode:
function HoleFeld(zeile: String; n: Integer): String;
Wenn du dann die Felder hast (als String), kannst du diese umwandeln in z.B. Extended Values. Diese kannst du dann auswerten oder in ein Array schreiben und dann weiterverarbeiten. Der nächste Schritt ist aber die Zerlegung einer Zeile, das sogenannte Parsen.

glkgereon 9. Sep 2004 15:53

Re: Datei auswerten
 
du kannst sie DIREKT auswerten, und dann nur den mittelwert in nem array speichern, oder sogar den direkt in ne datei schreiben...

so in etwa:
Delphi-Quellcode:
while not eof(logdatei)do
  begin
  holzeile(temp);
  wertezeileaus(temp);
  end;
dein holzeile:

Delphi-Quellcode:
readln(datei,temp);
result:=temp;
dann dein wertezeileaus:

Delphi-Quellcode:
zerlegezeile(line, teil1, teil2, teil3);
if (strtoint(teil)>10) and (strtoint(tei3)>10) and (strtoint(tei3)>10)
then
  begin
  mittelwerte[anzahl+1]:=(strtoint(teil)+strtoint(tei2)+strtoint(tei3))/3;
  anzahl:=anzahl+1;
  end;
so, temp isn string, teil1-3 auch
mittelwerte isn array of double/extended/was auch immer
anzahl die anzahl der mittelwerte -> integer

der rest is deine aufgabe, zb zerlegezeile

motu 10. Sep 2004 07:27

Re: Datei auswerten
 
Danke für den Code. :)

Zitat:

Zitat von glkbkk
du kannst sie DIREKT auswerten, und dann nur den mittelwert in nem array speichern, oder sogar den direkt in ne datei schreiben...

Aber drücke ich mich so schlecht aus? die Mittelwerte brauch' ich nicht von den Zeilen, sondern von den Spalten. Die Zeilennummern brauch' ich damit ich weiß, welche Zeilen der Spalten wichtig sind. Welche Zeilen wichtig sind sehe ich in meinen Referenzspalten. Ich müßte also jeden Zahlenwert in ein Arrayfeld werfen. Das geht bestimmt mir ner for Schleife. Dann weiß ich ja wo was liegt. Dann suche ich die wichtigen Zeilen und merke mir die Zeilennummern. Damit kann ich dann in allen Spalten Mittelwerte/Stdabwen der wichtigen Zeilen berechnen.

Ist jetzt vielleicht klar, was ich überhaupt machen möchte? :?


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:35 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz