![]() |
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:
So, das ganze soll aus Dateien ausgelesen werden, die in dem Format "1_6.DAT" oder "17_6.DAT" vorliegen.
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. In den Dateien gibt es Werte, die in dem Format vorliegen:
Code:
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.
283 0 7 0
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:
Ich hoffe ihr könnt mir helfen! Vielen Dank im Vorraus!
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. belinea |
Re: Daten einlesen + ausgeben
Zunächst ein herzliches Willkommen in der DP!
... und wo liegt nun das konkrete Problem? Was funktioniert da nicht? |
Re: Daten einlesen + ausgeben
|
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... ![]() ![]() |
Re: Daten einlesen + ausgeben
Oh, delphi-treff? Das wird dort nicht lange ein Crossposting bleiben. :mrgreen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz