AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Werte aus Spalten berechnen

Ein Thema von aaaaaaaaaa_10 · begonnen am 30. Jul 2009 · letzter Beitrag vom 30. Jul 2009
Antwort Antwort
aaaaaaaaaa_10
(Gast)

n/a Beiträge
 
#1

Werte aus Spalten berechnen

  Alt 30. Jul 2009, 07:39
Hallo,
ich möchte aus einer Datei mit Spalten (s0,s1,...) Minimum, Maximum und Mittelwert der Spalte berechnen. Die Werte kommen aus dem StringArray[s,z]. Mini habe ich zu Beginn auf 1000000 gesetzt und temp auf 0. Nun dachte ich mir folgendes :

var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12 : string;
Delphi-Quellcode:
procedure TMomFiles.WerteBerechnen;
var temp1 : real;
    i : integer;
begin
    begin
      temp1 := StrToFloat(StringArray[s,z]);
    //Minimum
      while (temp1 < Mini) do
      Mini := temp1;
    //Maximum
      while (temp1 > Maxi) do
      Maxi := temp1;
    //Mittelwert
      testtemp := testtemp+temp1;
      Avr := (testtemp)/(z+1);
      case s of
        0 : s0 := FloatToStr(Mini)+#9+FloatToStr(Maxi)+#9+FloatToStr(Avr);
        1 : s1 := FloatToStr(Mini)+#9+FloatToStr(Maxi)+#9+FloatToStr(Avr);
        2 : s2 := FloatToStr(Mini)+#9+FloatToStr(Maxi)+#9+FloatToStr(Avr);
        3 : s3 := FloatToStr(Mini)+#9+FloatToStr(Maxi)+#9+FloatToStr(Avr);
        4 : s4 := FloatToStr(Mini)+#9+FloatToStr(Maxi)+#9+FloatToStr(Avr);
        5 : s5 := FloatToStr(Mini)+#9+FloatToStr(Maxi)+#9+FloatToStr(Avr);
        6 : s6 := FloatToStr(Mini)+#9+FloatToStr(Maxi)+#9+FloatToStr(Avr);
        7 : s7 := FloatToStr(Mini)+#9+FloatToStr(Maxi)+#9+FloatToStr(Avr);
        8 : s8 := FloatToStr(Mini)+#9+FloatToStr(Maxi)+#9+FloatToStr(Avr);
        9 : s9 := FloatToStr(Mini)+#9+FloatToStr(Maxi)+#9+FloatToStr(Avr);
        10 : s10 := FloatToStr(Mini)+#9+FloatToStr(Maxi)+#9+FloatToStr(Avr);
        11 : s11 := FloatToStr(Mini)+#9+FloatToStr(Maxi)+#9+FloatToStr(Avr);
        12 : s12 := FloatToStr(Mini)+#9+FloatToStr(Maxi)+#9+FloatToStr(Avr);
      end;
    end;
end;
Das Problem, im Moment vergleicht er alle Werte und nicht nur die Spaltenwerte miteinander und ich weiß nicht, wie ich das ummodeln kann. Ich kann/muss doch nicht für jede case Anweisung Minimum, MAximum und Mittelwert Code einfügen?!
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Werte aus Spalten berechnen

  Alt 30. Jul 2009, 07:52
Im Moment sehe ich da gar keinen Zugriff auf die anderen Werte, du greifst da doch nur auf eine Zelle (StringArray[s, z]) zu. Und deine while-Schleifen können ja nur einmal durchlaufen, machen aber gar nix, da darin nur eine Zuweisung ausgeführt wird, die sofort die while-Bedingung falsch werden lässt.

Was du machen müsstest ist doch eigentlich in einer for-Schleife jeweils deine Spalte durchzugehen und die Werte jeweils mit den aktuellen Min-/Max-Werten zu vergleichen und ggf. zuzuweisen.
Ja, und eben den Mittelwert zu berechnen, wie du es ja auch schon drin hast.

Oder hast du da die Schleife selbst weggelassen (begin..end wäre ja da...)?
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
aaaaaaaaaa_10
(Gast)

n/a Beiträge
 
#3

Re: Werte aus Spalten berechnen

  Alt 30. Jul 2009, 07:56
Die Schleife kommt aus ner anderen Prozedur

Delphi-Quellcode:
z := Zeilenanzahl-1;
            begin;
              for s := 0 to Spaltenanzahl-2 do
              begin
                StringArray[s,z] := ZwSpeicher.Strings[s+2];
                WerteBerechnen;
                Temp := (StringArray[s,z]) + ';';
                TestDatei.Write(PChar(Temp)^,Length(Temp));

              end;
             StringArray[Spaltenanzahl-1,z] := ZwSpeicher.Strings[ZwSpeicher.Count-1];
             WerteBerechnen;
             Temp := (StringArray[Spaltenanzahl-1,z]) + #13#10;
             TestDatei.Write(PChar(Temp)^,Length(Temp));
            end;
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Werte aus Spalten berechnen

  Alt 30. Jul 2009, 08:06
Also wenn du die Berechnung mit Hilfe von globalen Variablen (s, z, ...) so verteilst, dann wundert mich das überhaupt nicht, dass du da Probleme bekommst...
Wie soll man da den Überblick behalten?

Statt der while-Schleifen aus dem ersten Quelltext kannst du dann einfach if-Abfragen benutzen.
Wofür eigentlich die ganzen Stringvariablen s0 bis s12? Wie wäre es z.B. mit einem Array?

Und was da (falsch) läuft, müsstest du eigentlich im Debugger sehen, das ist von außen viel schwerer nachzuvollziehen...
Was komisch ist: Du hast eine for-Schleife mit s, gleichzeitig verwendest du s aber in WerteBerechnen. for-Schleifenvariablen müssen aber lokale Variablen sein...
Kann es sein, dass du s zweimal deklariert hast? Einmal lokal und einmal global? So dass das s in WerteBerechnen gar nicht die Werte hat, die du erwartest?

Es wäre vielleicht am sinnvollsten das Projekt einmal anzuhängen wie es jetzt ist, denn so ist es ziemlich schwer zu sehen was da wie abläuft.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:59 Uhr.
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