Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi StringGrid - Minimum, Maximum, Durchschnitt bestimmen (https://www.delphipraxis.net/99839-stringgrid-minimum-maximum-durchschnitt-bestimmen.html)

atgis 18. Sep 2007 15:03


StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Hallo,

Ich habe folgendes Problem. Ich hab hier ein Programm, welches eine TXT Datei laden soll. Danach soll es aus den unterschiedlichen nummerischen Werten das Minimum, Maximum sowie das Arithmetische Mittel errechnen...

Die TXT Datei besteht aus "zwei" Teilen. Ein Kommentar Bereich und eben die Werte.

Also meine Überlegung wäre nun, den Kommentarbereich in ein Memo-Feld zuladen. Funktioniert auch...

Die einzelnen Werte der TXT sind wohl am besten in einem StringGrid aufgehoben. Nun möchte ich aber die TXT erst aber einer gewissen Zeile (nämlich nach dem Kommentar-Bereich) laden...Wie stell ich das an?

Hier erstmal die TXT:
Delphi-Quellcode:
'**************************************************************************
'LogView File;      ScopeView Version:1.03
'Copyright 1994, AGA Associates.
'File Created: 10:20:24pm Nov 14, 03
'**************************************************************************
'Timebase:         00:00:01
'Hi Limit:         Off
'Lo Limit:         Off
'Filter Mode:      Capture All Data; Filter Off
'**************************************************************************
   0020     C   TE   09:20:01pm
   0020     C   TE   09:20:02pm
   0020     C   TE   09:20:03pm
   0020     C   TE   09:20:04pm
   0021     C   TE   09:20:05pm
   0022     C   TE   09:20:06pm
   0023     C   TE   09:20:07pm
   0023    C   TE   09:20:08pm
   0024     C   TE   09:20:09pm
   0023     C   TE   09:20:10pm
   0023     C   TE   09:20:11pm
   0022     C   TE   09:20:12pm
   0020     C   TE   09:20:13pm
   0020     C   TE   09:20:14pm
   0019     C   TE   09:20:15pm
....usw....
So lade ich die TXT in das StringGrid:

Delphi-Quellcode:
procedure TForm2.btLadenClick(Sender: TObject);
var Datei: Textfile;
    ZeileIndex, SpalteIndex: integer;
    Zeile: string;

 //Laden der TXT in das StringGrid
 AssignFile(Datei, OpenDialog1.FileName);
 reset(Datei);
 ZeileIndex:=1;
 while not EoF(Datei) do
  begin
   readln(Datei, Zeile);
   SpalteIndex:=0;
   while pos(chr(9), Zeile) <> 0 do
   begin
    sgMess.Cells[SpalteIndex, ZeileIndex]:=copy(Zeile, 1, pos(chr(9), Zeile)-1);
    delete(Zeile, 1, pos(chr(9), Zeile));
    inc(SpalteIndex);
   end;
 sgMess.Cells[SpalteIndex, ZeileIndex]:=Zeile;
 inc(ZeileIndex);
 //Tabelle automatisch um 1 Zeile erhöhen
 sgMess.RowCount:=sgMess.RowCount+1;
 end;
 CloseFile(Datei);
//letze Zeile ist zuviel -> überstehende Zeile löschen
sgMess.RowCount:=sgMess.RowCount-1;
end;
Aber wiegesagt, soll der Inhalt erst nach dem Kommentar-Bereich geladen werden (ab der 10 Teile).

Kann mir jemand helfen?




EDIT: Das erste Problem ist gelöst! Der der Inhalt wird erst nach dem Kommentar-Bereich, in das StringGrid geladen...

Fehlt noch die Maximum, Minimum und Mittelwert bestimmung...

kaiser1401 18. Sep 2007 15:10

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
mh, da deine Kommentare mit ' zu beginnen scheinen könttest du bei jeder Zeile zunächst vergleichen ob das 1. Zeichen ein solches ist und diese ZEile dann ignorieren bzw überspringen ...

Edit:

Also in dem Memo, nachdem du die Datei eingelesen hast:

Delphi-Quellcode:
while (memo1.lines.count>0) and (copy(memo1.lines[0],1,1 = '''') do
 begin
  memo1.lines.delete(0); // das delete ist geraten, grad die syntax nicht im kopf
 end;

atgis 18. Sep 2007 15:45

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Zitat:

mh, da deine Kommentare mit ' zu beginnen scheinen könttest du bei jeder Zeile zunächst vergleichen ob das 1. Zeichen ein solches ist und diese ZEile dann ignorieren bzw überspringen ...
Genau das, hatte ich mir auch schon überlegt! Ich habe bloß Probleme die Abfrage an der richtigen stelle einzufügen... :stupid:

Delphi-Quellcode:
 
if pos(1, 1) = chr(96) then
ShowMessage('Ist eins')
 else
ShowMessage('Ist keins');
Sowas funktioniert aber nicht...

pstruh 18. Sep 2007 15:50

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Hallo, wenn noch nicht gelöst, dann vielleicht so ...
Delphi-Quellcode:
while not EoF(Datei) do
  begin
   readln(Datei, Zeile);
   if Zeile[1]<>'''' then begin  // << zusätzlich
    SpalteIndex:=0;
    while pos(chr(9), Zeile) <> 0 do
    begin
     sgMess.Cells[SpalteIndex, ZeileIndex]:=copy(Zeile, 1, pos(chr(9), Zeile)-1);
     delete(Zeile, 1, pos(chr(9), Zeile));
     inc(SpalteIndex);
    end;
 sgMess.Cells[SpalteIndex, ZeileIndex]:=Zeile;
 inc(ZeileIndex);
 //Tabelle automatisch um 1 Zeile erhöhen
 sgMess.RowCount:=sgMess.RowCount+1;
 end; // << zusätzlich
end;

pstruh 18. Sep 2007 15:53

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Hm, wieso pos(1,1)=Chr(96) ???? Wenn schon, dann pos(chr(96),Zeile)=1 then ...
aber da ist kein #96, sondern ein #39 in deiner Datei

atgis 18. Sep 2007 16:14

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Zitat:

Hm, wieso pos(1,1)=Chr(96) ???? Wenn schon, dann pos(chr(96),Zeile)=1 then ...
aber da ist kein #96, sondern ein #39 in deiner Datei
Ja hab ich vertauscht! Danke für den Hinweis...

Delphi-Quellcode:
if Zeile[1]<>'''' then begin  // << zusätzlich
end;
Funktioniert leider nicht -> Exception!


EDIT: Ich muss irgendwie jede Zeile überprüfen, ob das erste Zeichen ein #39 ist! Wenn ja soll die Zeile nicht ausgegeben werden. Wenn nicht wird einfach weitergemacht und nur Zeilen ohne #39 werden ausgegeben...

Mh aber wie?

pstruh 18. Sep 2007 16:16

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
na, dann mit pos(#39,Zeile)=0 ...

atgis 18. Sep 2007 16:23

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Mh...ich bekomm immer eine Exception...
http://img3.imagebanana.com/img/c81i.../NeuBitmap.JPG

kaiser1401 18. Sep 2007 16:28

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
"zeile" ist kein array, sondern nur ein string, oder?
also knallt zeile[1] auch.

atgis 18. Sep 2007 16:30

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Jawohl, Zeile ist String...beides bringt die Exception...

Mh, was kann man da machen?!

kaiser1401 18. Sep 2007 16:34

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
die datei existiert auch? hast du den opendialog vorher aufgerufen und mit ok bestätigt? sonst steht in der eigenschaft Filename nix drin. ansonsten geh ma mit dem debugger durch un guck wo`s knallt. (Haltepunkt setzen mit F5, ausführen mit F9 bist du da ankommst, weiterer Schritt mit F8 )

pstruh 18. Sep 2007 16:38

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Also IOerror 104 bedeutet "Datei wurde nicht für Leseoperation geöffnet" ...

PS : Wenn die Variable "Zeile" ein String ist, dann sollte mit Zeile[n] eigentlich das n-te Zeichen des Strings extrahiert werde (ohne jeden Knall) - oder sehe ich das falsch?

atgis 18. Sep 2007 16:44

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Also wenn es bei
Delphi-Quellcode:
if pos(chr(39),Zeile)=0 then begin  // << zusätzlich
ankommt,

Überspringt es alles bis
Delphi-Quellcode:
CloseFile(Datei);
springt hoch und "knallt" bei

Delphi-Quellcode:
while not EoF(Datei) do

EDIT: Ich häng das Programm mal an.

pstruh 18. Sep 2007 16:49

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
So, der pstruh muss jetzt aus dem Büro nach Hause schwimmen! Ich denke, du suchst an der falschen Stelle. Die Fehlermeldung 104 sagt ja, dass die Datei gar nicht gelesen werden kann. Hier musst du erst einmal ansetzen. Bis später ... und viel Erfolg

shmia 18. Sep 2007 17:23

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Wenn du die Daten eh schon in einem TMemo hast, wozu dann nochmals laden ?
So geht auch:
Delphi-Quellcode:
procedure TForm2.btLadenClick(Sender: TObject);
var
    ZeileIndex, SpalteIndex: integer;
    Zeile: string;
    i : integer;
    liste : TStrings;
begin
 //Pfad zum Stammverzeichnis
 OpenDialog1.InitialDir:=ExtractFilePath(ParamStr(0));

 if not opendialog1.Execute then
  exit;
 Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
 liste := Memo1.lines;

 // Daten ins Stringgrid übertragen
 ZeileIndex:=1;
 for i:=0 to liste.count-1 do
  begin
   zeile := liste[i];
   if (zeile<>'') and (zeile[1]='''') then
      continue; // Kommentarzeile überspringen

   //Tabelle automatisch um 1 Zeile erhöhen
   sgMess.RowCount:=sgMess.RowCount+1;

   SpalteIndex:=0;
   while pos(chr(9), Zeile) <> 0 do
   begin
    sgMess.Cells[SpalteIndex, ZeileIndex]:=copy(Zeile, 1, pos(chr(9), Zeile)-1);
    delete(Zeile, 1, pos(chr(9), Zeile));
    inc(SpalteIndex);
   end;
 sgMess.Cells[SpalteIndex, ZeileIndex]:=Zeile;
 inc(ZeileIndex);
 end;
end;

atgis 18. Sep 2007 18:16

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Vielen Dank! Funktioniert einwandfrei :)
http://img3.imagebanana.com/img/2g4h.../NeuBitmap.JPG

Nun zum nächsten Problem...wie bekommen ich aus der Spalte mit den Werten, das Maximum und Minimum heraus?

pstruh 18. Sep 2007 20:14

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Hallo atgis,
deine Frage ist jetzt etwas verwunderlich, da die Lösung doch sehr einfach: In einer Schleife durchläufst du die GridSpalte mit den Werten. Vorher deklarierst du 2 Variablen MinVal:=maxInt und MaxVal:=0, wenn der Zellwert<MinVal ist, dann wird MinVal durch den Zellwert ersetzt, wenn Zellwert>MaxVal dann analog. Bist du in der letzten GridRow angekommen, stehen in beiden Variablen die gewünschten Werte. (Habe das jetzt bewusst nicht codiert), ich denke, es ist am lehrreichsten, wenn du das mit diesen Anweisungen selbst machst. Bin für weitere Hilfestellungen aber (naürlich) ansprechbar :hi:

atgis 19. Sep 2007 12:05

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Danke!
Delphi-Quellcode:
var MinVal: integer;
    MaxVal: integer;
    i: integer;
begin
MinVal:=maxInt;
MaxVal:=0;

for i:=1 to sgMess.RowCount-1 do
 if i < MinVal then
  MinVal:=i
 else
  if i > MaxVal then
   MaxVal:=i;

edMin.Text:=IntToStr(MinVal);
edMax.Text:=IntToStr(MaxVal);
So habe ich aber nur die Ergebnisse der ersten Spalte. Wie komme ich in die 2. Spalte mit den Werten?

pstruh 19. Sep 2007 12:45

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Hallo atgis,
joooo, das ist schon FAST die Lösung. Denkfehler dabei ist, dass du nur den Schleifenzähler untersuchst - du musst natürlich auf den Zellinhalt deiner Wertespalte prüfen (Werte stehen in Spalte 1, oder?)
Delphi-Quellcode:
if StrToInt(sgMess.Cells[1,i])<MinVal then MinVal:=StrToInt(sgMess.Cells[1,i])
Für den MaxWert analoges Vorgehen.
Gruß aus Hamburg

atgis 19. Sep 2007 13:39

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Delphi-Quellcode:
var MinVal: integer;
    MaxVal: integer;
    i: integer;
begin
MinVal:=maxInt;
MaxVal:=0;

for i:=1 to sgMess.RowCount-1 do
 if StrToInt(sgMess.Cells[1,i]) < MinVal then
  MinVal:=StrToInt(sgMess.Cells[1,i])
 else
  if StrToInt(sgMess.Cells[1,i]) > MaxVal then
   MaxVal:=StrToInt(sgMess.Cells[1,i]);

edMin.Text:=IntToStr(MinVal);
edMax.Text:=IntToStr(MaxVal);
Aber der Compiler spuckt mich schon bei
Delphi-Quellcode:
StrToInt(sgMess.Cells[1,i])
an, dass der Wert 0019 kein gültiger Integerwert sei...Warum nicht? Ich wandel doch den String um? Es liegt aber nicht an 0019 - ich hab zum testen nur 19 hineingeschrieben!

http://img213.imageshack.us/img213/1...5745tq2.th.jpg
bei der Fehlermeldung "19 fehlt das andere "-Zeichen?! :shock:

pstruh 19. Sep 2007 13:58

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Hmmm, also da bin ich jetzt am Rätseln :evil: Das sollte eigentlich ohne Fehler funktionieren; da bin ich im Moment überfragt, sorry ...

pstruh 19. Sep 2007 14:13

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Ich habe das jetzt eben mal in einem Testprogramm durchgespielt, da hat es funktioniert - ich kann im Augenblick diese Fehlermeldung absolut nicht nachvollziehen. Ist es denn richtig, dass deine "Zahlenwerte" alle in der Spalte 1 enthalten sind?

atgis 19. Sep 2007 14:28

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Ja die Werte stehen alle drin...so sieht es aus, wenn ich auf den Button Laden klick! Button1 soll das Maximum und Minimum in den Editfeldern ausgeben...

Da kommt aber eben der Fehler...
Hier der Screenshot:
http://img301.imageshack.us/img301/6...tmapki4.th.jpg

EDIT: Ok! Ich hab den Fehler! Hinter den Werten z.b. "0019 " sind noch zwei Leerzeichen! Deswegen funktionierte die Umwandlung nicht! Kann man das irgendwie mit berücksichtigen, dass da 2 Leerzeichen sind?

pstruh 19. Sep 2007 14:43

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Tja, wat nu? Sind da unsichtbare Sonderzeichen im String? Prüfe doch mal, wie lang der String in der Zelle ist, ist er länger als 4 Zeichen (wenn 0019 zu sehen ist) dann wäre das ja ein Indiz ... Bin gespannt auf deine Antwort

atgis 19. Sep 2007 14:48

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Über dir :-D

DeddyH 19. Sep 2007 14:51

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Mit der Funktion trim bekommst Du überflüssige Leerzeichen weg.

atgis 19. Sep 2007 14:55

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Muss das dann schon beim Laden, der TXT, in das StringGrid eingefügt werden?

EDIT:Hab es beim Laden mit eingefügt
Delphi-Quellcode:
  while pos(chr(9), Zeile) <> 0 do
  begin
   sgMess.Cells[SpalteIndex, ZeileIndex]:=trim(copy(Zeile, 1, pos(chr(9), Zeile)-1)); //geändert
   delete(Zeile, 1, pos(chr(9), Zeile));
   inc(SpalteIndex);
  end;
Jetzt fehlt noch das 3. Problem :lol:! Wie kann ich den Mittelwert der Werte ermitteln? Ich muss mit einer Schleife erstmal alle Werte zusammen Zählen und dann durch die Anzahl (RowCount?) teilen?

DeddyH 19. Sep 2007 15:03

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
IMHO müsste es beim Vergleichen genügen:
Delphi-Quellcode:
if StrToInt(trim(sgMess.Cells[1,i])) < MinVal then
  MinVal:=StrToInt(trim(sgMess.Cells[1,i]))

DeddyH 19. Sep 2007 15:09

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Zitat:

Zitat von atgis
Ich muss mit einer Schleife erstmal alle Werte zusammen Zählen und dann durch die Anzahl (RowCount?) teilen?

Dabei aber daran denken, dass es FixedRows geben könnte (also RowCount - FixedRows);)

pstruh 19. Sep 2007 15:11

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Hallo atgis.
Prima! Wir kommen voran! :cheers: Ja, Mittelwert wie von dir formuliert. Eine zusätzliche Schleife wird nicht benötigt; summiere einfach schon in der vorhandenen Schleife zur Min/Max-Bestimmung.
Gruß

atgis 19. Sep 2007 15:42

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
So...ich hab aber noch ein Problem mit dem Datentyp!
Delphi-Quellcode:
begin
summe:=0;
for i:=1 to sgMess.RowCount-1 do
 summe:=StrToInt(sgMess.Cells[1,i])+summe;

 mittelwert:=summe/(sgMess.RowCount-1);

edMittel.Text:=IntToStr(mittelwert);
end;
Inkompatible Typen: "Integer" und "Extended"...

Wie wandle ich das (sgMess.RowCount-1); um, dass ich damit Rechnen kann?

DeddyH 19. Sep 2007 16:06

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Wie ist mittelwert deklariert?

atgis 19. Sep 2007 16:14

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Als integer...

atgis 19. Sep 2007 16:16

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Ok ich habs... :oops: ...

Ich hab es als Single Deklariert...und das Ergebnis im Editfeld mit FloatToStr umgewandelt

atgis 19. Sep 2007 17:35

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
So noch etwas...

ich muss noch eine Abweichung des Mittelwertes berechnen. Gegeben ist:
Delphi-Quellcode:
//Abweichung ermitteln
Mittelwert:= _ _ _ _ _;
AbweichungsQuadrat:=0;
for i:= 1 to Anzahl do
 AbweichungsQuadrat:=AbweichungsQuadrat + (x[i] - Mittelwert) * (x[i] - Mittelwert);
Standardabweichung:= SQRT(AbweichungsQuadrat/(Anzahl(Zahlenfeld) 1);
Aber leider kann ich damit nicht viel anfangen. Weiß jemand anderes was? Im Zusammenhang mit dem Arithmetische Mittel, kenn ich nur die mittlere Abweichung. Die wird aber anders berechnet... :roll:

pstruh 19. Sep 2007 18:10

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Hallo atgis,
wo liegt das Problem? Ich kenne die Formel nicht. Aber es schaut doch so aus, dass dies schon die Umsetzung in Delphi ist. Die Werte x[i] musst du offenbar nur gegen die Zellwerte austauschen: x[i] wird also zu StrToInt(sgMess.Cells[1,i]) ...

atgis 19. Sep 2007 18:57

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Ja genau...das hab ich mir auch schon gedacht :) . Ich habe bloß wieder Probleme, bei der Umsetzung. Ich schreib einfach mal meinen Stand:
Delphi-Quellcode:
Mittelwert:= edMittel.text; //bzw summe / (sgMess.RowCount-1);
AbweichungsQuadrat:=0;
for i:= 1 to sgMess.RowCount-1 do
 AbweichungsQuadrat:=AbweichungsQuadrat + (StrToInt(sgMess.Cells[1,i]) - Mittelwert) * (StrToInt(sgMess.Cells[1,i]) - Mittelwert);
Standardabweichung:= SQRT(AbweichungsQuadrat/(sgMess.RowCount-1(Zahlenfeld) 1) //Zahlenfeld? ist das auch StrToInt(sgMess.Cells[1,i]?

edAbw.text:=IntToStr(Standardabweichung);
So einfach ist es aber dann doch nicht! Es funktioniert so nämlich nicht. Schön wenn es jemand verbessern kann...

EDIT: hier hab ich schon den 1. Fehler
Delphi-Quellcode:
AbweichungsQuadrat:=AbweichungsQuadrat + (StrToInt(sgMess.Cells[1,i]) - Mittelwert) * (StrToInt(sgMess.Cells[1,i]) - Mittelwert);
Integer und Extended sind inkompatibel...da Mittelwert Single ist...

pstruh 19. Sep 2007 20:04

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Hallo atgis,
sorry, da habe ich nicht daran gedacht. Nähern wir uns der Lösung, kenne sie auch noch nicht :-( Verwenden wir statt StrToInt gleich StrToFoat, damit kommen wir einen Schritt weiter. Das Nächste: Der Divisor "Anzahl Zahlenfeld" wird vermutlich die Anzahl der Werte sein, in unserem Fall also RowCount-FixedRows. Sorgen macht mir im Augenblich die "einsam stehende 1" vor der letzten Klammer - die kann so nicht richtg sein. Da müssen wir mal in ein Mathebuch schauen.... (Übrigens, machen wir gerade irgend eine Hausaufgabe???)
Gruß aus Hamburg

edit1 : In meinem uralten "Handbuch der Mathematik" finde ich eine Formel die zu passen scheint: "Mittlerer Fehler der Einzelmessung bei gleicher Präzision der Einzelmessung" - demnach ist der Divisor "n-1" >> offenbar fehlt da also ein Minuszeichen. :nerd:

atgis 20. Sep 2007 11:12

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
Mh...ich glaube mich erinnern zu können es ist diese Formel:
Standardabweichung (Die Standardabweichung ist in der Stochastik ein Maß für die Streuung der Werte einer Zufallsvariablen um ihren Mittelwert.)
http://upload.wikimedia.org/math/e/4...862c2be79c.png

Danach war aber eben der Quelltext von oben gegeben?! Meinst du auch diese? :wink:

atgis 20. Sep 2007 13:44

Re: StringGrid - Minimum, Maximum, Durchschnitt bestimmen
 
So ich hab noch einwenig Probiert...

Delphi-Quellcode:
var //DCL Abweichung
    AbweichungsQuadrat: single;
    Standardabweichung: single;
begin

//Abweichung ermitteln
Mittelwert:= summe / (sgMess.RowCount-1);
AbweichungsQuadrat:=0;
for i:= 1 to sgMess.RowCount-1 do
AbweichungsQuadrat:=AbweichungsQuadrat + (StrToFloat(sgMess.Cells[1,i]) - Mittelwert) * (StrToFloat(sgMess.Cells[1,i]) - Mittelwert);
Standardabweichung:= SQRT((AbweichungsQuadrat)/(sgMess.RowCount-1)*(StrToFloat(sgMess.Cells[1,i])) -1);

edAbw.text:=FloatToStr(Standardabweichung);

end;
Ich erhalte aber wieder folgende Exception:
http://img233.imageshack.us/img233/2...tmapah7.th.jpg

Da in den Klammern nichts steht, wurde wohl auch noch gar kein Wert benutzt?!


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:21 Uhr.
Seite 1 von 2  1 2      

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