Autor Beitrag
skall
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: Mo 26.01.09 18:41 
so und noch einmal huete nabend :D:D:D

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
procedure DatenEinlesen (DatumWert:StringVar MittelWert:TStundenMittel; MaxWert:TDatenSatz);
  var buffer, Volt : String;
      NullWert, Minute, Stunden,h, m, e, k, i : Integer;
      VoltWert, StMittel : Real;
      TextDatei : TextFile;
      Liste : TStringList;
Begin
  AssignFile(TextDatei, DatumWert + '.dat');
  FileMode := fmOpenRead;
  Reset(TextDatei);
  e := 0;
  For h := 1 To 12 Do
      begin
        e := e + 1;
        VoltWert := 0;
        For m := 0 To 59 Do
            begin
              while not Eof(TextDatei) do
                 Begin
                   Liste := TStringList.Create;
                   ReadLn(TextDatei, buffer);
                   k := Pos(#9, buffer) - 1;
                   Volt := '';
                         For e := 1 To k Do
                             begin
                               Volt := Volt + buffer[e];
                             end;
                   VoltWert := VoltWert + StrToFloat(Volt);
                   Liste.Free;
                 end;
            End;
        VoltWert := VoltWert / 60;
        MittelWert[h] := VoltWert;
      End;
  Closefile(TextDatei);
End;



Also... Mein Problem: Die Varriable "h" die einerseits oben in der ersten For-Schleife eingesetzt wird und andereseits unten in dem Array "MittelWert" scheint eigentlich normal zulaufen, wie mir über ein showMessage gezeigt wurde... Allerdings wird der VoltWert zusammen gezählt und nur in dem Array Feld 1 kommt eine sehr große Zahl raus, wo ich denke, dass er alles dort rein schmeist.... >.<

Danke im Vorraus :):):)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 26.01.09 18:47 
FileMode setzen kannst du dir sparen, wenn du ohnehin die Datei so zum Lesen öffnest.

So, zum Problem: überlege dir einmal was du tust. Beim ersten Durchlaufen der inneren Schleife bist du am Ende der Datei angelangt (while not Eof(TextDatei) do).
So, und in allen weiteren Durchläufen passiert doch gar nichts mehr. Schließlich bist du ja schon am Dateiende.

Mir ist nicht klar, warum du eigentlich so oft die Datei neu einlesen willst. :gruebel:
skall Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: Mo 26.01.09 18:55 
Naja das Ding ist, dass ich da iwie versuche 600 Zeilen durchlaufen zu lassen und die erste Ziffer, die ich da über die Zeichen Kette raussonder zusammen rechnen will damit die abgespeichert wird als Stunden MIttelwert....

Hmm... ja oukey :o das könnte vieles erklären :D dann guck ich mir das ncohmal vom Grund auf an...
skall Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: Mo 26.01.09 19:01 
hmmm... Danke für den tipp :D

Ich hätte mir viel vom Tag sparen können, hätte ich nur früher mal sowas gefragt -.-"
Funktioniert auf wundersamerweise plötzlich... ^^
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 26.01.09 19:07 
Kleiner Tipp: Mit dem Debugger siehst du ja was das Programm macht. Wenn du also am Anfang einen Haltepunkt setzt (F5 oder Klick vor die Zeile) und dann, wenn das Programm dort ankommt, mit F8 zeilenweise durch das Programm gehst, dann hättest du gesehen, dass er eben die innere Schleife nur einmal bis zum Ende durchläuft. ;-)

Um dann nicht 600 Zeilen durchzugehen kann man eine Kopie der Testdatei ja zunächst etwas kürzen.

Zudem kannst du auch weitere Haltepunkte setzen und mit F9 immer bis zum jeweils nächsten springen.
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Mo 26.01.09 19:48 
Ich dachte ich hätte dir hier geschrieben, wie man am einfachsten Zahlen aus einer Datei rausliest. :gruebel:
skall Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: Mo 26.01.09 20:03 
da zickt er iwie rum :S

Hab das jetzt anders und da klappt es fast...