Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Daten einlesen + ausgeben (https://www.delphipraxis.net/127897-daten-einlesen-ausgeben.html)

belinea 20. Jan 2009 22:17


Daten einlesen + ausgeben
 
Hallo!
Ich habe ein ziemlich großes Problem. Habe die Aufgabe aus verschiedenen Dateien die Daten auszulesen und diese dann auszugeben. Ich habe bereits ein vorgefertigtes Hauptprogramm, welches ich nicht verändern darf und soll dazu die Unit "DateioperationenSolar" erstellen.

Hier ist der Code aus der vorgegebenen Unit:
Delphi-Quellcode:
unit Unit1;

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, Grids, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    MittelwerteStringGrid: TStringGrid;
    MaxWertLabeledEdit: TLabeledEdit;
    MaxZeitLabeledEdit: TLabeledEdit;
    ErgebnisseSpeichernButton: TButton;
    BeendenButton:            TButton;
    EinlesenButton:           TButton;
    MonatComboBox: TComboBox;
    TagComboBox:  TComboBox;
    MonatLabel: TLabel;
    TagLabel:  TLabel;
    procedure BeendenButtonClick(Sender: TObject);
    procedure EinlesenButtonClick(Sender: TObject);
    procedure ErgebnisseSpeichernButtonClick(Sender: TObject);
  private
    procedure DatumErfassen(Var Datum: String);
  end;

var Form1: TForm1;

implementation {$R *.dfm}
Uses DateioperationenSolar;

Var DateiDatum   : String;
    StundenMittel : TStundenMittel;
    Maximum      : TDatensatz;

procedure TForm1.BeendenButtonClick(Sender: TObject);
begin
  Application.Terminate
end;

procedure TForm1.EinlesenButtonClick(Sender: TObject);
Var Stunde : Integer;
begin
  DatumErfassen (DateiDatum);
  DatenEinlesen (DateiDatum, StundenMittel, Maximum);
  MaxWertLabeledEdit.Text := FloatToStr(Maximum.Wert);
  MaxZeitLabeledEdit.Text := IntToStr(Maximum.Stunde) + ' : ' +
                             IntToStr(Maximum.Minute);
  For Stunde := ersteStunde To letzteStunde Do
  Begin
    MittelwerteStringGrid.Cells [0,Stunde - ersteStunde + 1] := IntToStr(Stunde);
    MittelwerteStringGrid.Cells [1,Stunde - ersteStunde + 1] :=
                         FloatToStrF(StundenMittel [Stunde], ffNumber, 4, 0);
  End;
end;

procedure TForm1.ErgebnisseSpeichernButtonClick(Sender: TObject);
Var ErgebnisDatei: TextFile;
    ErgebnisdateiName: String;
begin
  DatenSpeichern (StundenMittel, Maximum, DateiDatum);
end;

procedure TForm1.DatumErfassen(Var Datum: String);
begin
  Datum := IntToStr (1 + TagComboBox.ItemIndex) + '_' +
           IntToStr (1 + MonatComboBox.ItemIndex);
end;

end.
So, das ganze soll aus Dateien ausgelesen werden, die in dem Format "1_6.DAT" oder "17_6.DAT" vorliegen.
In den Dateien gibt es Werte, die in dem Format vorliegen:
Code:
283   0    7  0
Der erste Wert, gibt den Volt-Wert an, die 0 gibt nichts an (ist in jeder Zeile 0) und der letzte Wert die Uhrzeit. Das ganze ist mit Tabs getrennt.

Das Programm soll jetzt den Mittelwert von den einzelnen Stunden berechnen und man soll den Tag auswählen können. Das Problem ist, unser Lehrer hat uns quasi nichts dazu erklärt und ehrlich gesagt kann keiner die Aufgabe lösen. Ich denke mal, die Aufgabe ist nicht wirklich schwer, aber wenn man nicht erklärt bekommt wie es geht, kann man es ja auch nicht lösen :/

Ich habe bereits einen Teil von DateioperationenSolar programmiert, allerdings funktioniert da noch nicht wirklich etwas und ich glaube auch mein Ansatz ist falsch.

Hier mal kurz mein Ansatz, allerdings kann man wahrscheinlich alles verwerfen :/
Delphi-Quellcode:
unit DateioperationenSolar;

interface

const
   ersteStunde = 7;
   letzteStunde = 19;

type
  TStundenMittel = array[7..19] of real;
  TDatenSatz = Record
               wert: real;
               Stunde: integer;
               Minute: integer;
               end;

procedure DatenEinlesen (D:string;s: TStundenMittel; M:TDatenSatz);
procedure DatenSpeichern (s: TStundenMittel; M: TDatenSatz; D: String);

implementation

procedure DatenEinlesen (D:string; s: TStundenMittel; M:TDatenSatz);
type TFeldtyp = array of string;
var solarfile: Textfile;
puffer: string;
i: integer;
n: integer;
zweipuffer: TFeldtyp;
laenge: integer;
drittpuffer: TFeldtyp;
wert: TFeldtyp;
ersteabschneidstelle: integer;
abschneidstelle: integer;
begin
  AssignFile(solarfile, D + '.dat');
  reset(solarfile);
    repeat
      Read (solarfile,puffer);
      Inc(n);
      zweipuffer[n]:= puffer;
      laenge := length(zweipuffer[n]);
      for i:= 1 to laenge do
        begin
          if zweipuffer[n] = '#9' then
            begin
              ersteabschneidstelle := abschneidstelle;
              abschneidstelle := i;
              drittpuffer[i] := copy(zweipuffer, ersteabschneidstelle, abschneidstelle);
            end;
        end;
    //drittpuffer := copy(zweipuffer);
    until EoF (solarfile);
    closefile(solarfile);
    for i:=1 to n do
end;

procedure DatenSpeichern (s: TStundenMittel; M: TDatenSatz; D: String);
begin
end;

end.
Ich hoffe ihr könnt mir helfen! Vielen Dank im Vorraus!

belinea

taaktaak 20. Jan 2009 22:29

Re: Daten einlesen + ausgeben
 
Zunächst ein herzliches Willkommen in der DP!

... und wo liegt nun das konkrete Problem?
Was funktioniert da nicht?

mr_emre_d 20. Jan 2009 22:42

Re: Daten einlesen + ausgeben
 
-.-'
http://www.delphipraxis.net/internal...368&highlight=

Besonders Punkt 3 und 4 beachten !

jaenicke 20. Jan 2009 22:44

Re: Daten einlesen + ausgeben
 
Gleich mehrere Crossposts...
Diese solltest du angeben. Überall denken jetzt Leute darüber nach und schreiben etwas dazu statt nachschauen zu können ob es anderswo schon Antworten gibt...

http://forum.delphi-treff.de/showthread.php?t=25672
http://www.delphi-forum.de/viewtopic.php?p=545201

Luckie 20. Jan 2009 22:53

Re: Daten einlesen + ausgeben
 
Oh, delphi-treff? Das wird dort nicht lange ein Crossposting bleiben. :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:31 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