Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

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?!


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:43 Uhr.
Seite 1 von 5  1 23     Letzte »    

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