|
Registriert seit: 18. Dez 2008 Ort: NRW 28 Beiträge Delphi 2007 Professional |
#1
Hallo.
Ich habe hier ein Programm, das aus einer .txt Datei, die mit bestimmten Format erstellt wird, Daten auslesen und etwas errechnen und dann in einer anderen .txt datei abspeichern soll. Allerdings lädt er die .txt Datei scheinbar nciht korrekt ein. Vielfaches herumbasteln führte zu keiner Lösung.. hier der Code: im Anhang alles was dazu gehört.
Delphi-Quellcode:
unit artikel1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TFStatistik = class(TForm) LArtikelnummer: TLabel; LMenge: TLabel; LUmsatz: TLabel; EArtikelnummer: TEdit; EMenge: TEdit; EUmsatz: TEdit; BLaden: TButton; BAuswerten: TButton; BBeenden: TButton; ODLaden: TOpenDialog; SDSpeichern: TSaveDialog; BSpeichern: TButton; procedure FormCreate(Sender: TObject); procedure BLadenClick(Sender: TObject); procedure BAuswertenClick(Sender: TObject); procedure BSpeichernClick(Sender: TObject); procedure BBeendenClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var FStatistik: TFStatistik; implementation {$R *.DFM} const max = 100; type tbuchungssatz = record datum: string [12]; artikelnr, menge: integer; preis: real; end; var buchungssatz: array [1..max] of tbuchungssatz; //"Array of Record" anzahl, gesucht: integer; //Variablen für die Anzahl der eingelesenen Datensätze und die gesuchte Artikelnummer //Prozedur zum Einlesen der Buchungssätze aus der Textdatei procedure einlesen (dateiname: string); var datei: textfile; //Dateivariable begin anzahl:=0; //Initilaisierung von anzahl assignfile (datei, dateiname); //Verbindung von logischem und physischem Dateinamen {$I-} //Ausschalten der Ein-/Ausgabeprüfung reset (datei); //Datei öffnen {$I+} //Einschalten der Ein-/Ausgabeprüfung if ioresult = 0 //Hat alles geklappt? then //Wenn ja: begin if not eof (datei) then readln (datei); //1. Zeile überlesen if not eof (datei) then readln (datei); //2. Zeile überlesen while not eof (datei) do //Solange Dateiende nicht erreicht... begin anzahl:=anzahl+1; //Erhöhung der Anzahl der Datensätze with buchungssatz [anzahl] do readln (datei, datum, artikelnr, menge, preis); //Dateizeile in die Recordkomponenten des anzahl-ten Datensatzes einlesen end; closefile (datei); //Datei schließen end else showmessage ('Fehler beim Öffnen der Datei!'); //Wenn nein: Meldung ausgeben end; //Prozedur zum Speichern der Auswertung in einer Textdatei procedure speichern (dateiname: string); var datei: textfile; //Dateivariable i: integer; begin assignfile (datei, dateiname); //Verbindung von logischem und physischem Dateinamen {$I-} //Ausschalten der Ein-/Ausgabeprüfung rewrite (datei); //Datei öffnen {$I+} //Einschalten der Ein-/Ausgabeprüfung if ioresult = 0 //Hat alles geklappt? then //Wenn ja: begin writeln (datei, 'Artikelnummer: ', gesucht); //Titelzeilen schreiben writeln (datei); writeln (datei, 'Datum Menge Preis Umsatz'); writeln (datei, '-------------------------------------------------'); for i:=1 to anzahl do //Buchungssätze durchlaufen with buchungssatz[i] do if artikelnr=gesucht then //Wenn Artikelnummer des i-ten Buchungssatzes der gesuchten Artikelnummer entspricht writeln (datei, datum, formatfloat ('#,##0', menge):10, //i-ten Buchungssatz in Datei ausgeben formatfloat ('#,##0.00', preis):12, formatfloat ('#,##0.00', menge*preis):15); closefile (datei); //Datei schließen end else showmessage ('Statistik kann nicht gespeichert werden!'); //Datei konnte nicht erstellt werden: Meldung ausgeben end; //Wenn das Formular erzeugt wird... procedure TFStatistik.FormCreate(Sender: TObject); begin anzahl:=0; //anzahl initialisieren gesucht:=0; //gesucht initialisieren end; //Wenn man auf Laden klickt... procedure TFStatistik.BLadenClick(Sender: TObject); begin if odladen.execute then einlesen (odladen.filename); //Wenn im Öffnen-Dialog Öffnen angeklickt wurde: Daten einlesen eartikelnummer.setfocus; //Cursor ins Edit EArtikelnummer setzen end; //Wenn man auf Auswerten klickt... procedure TFStatistik.BAuswertenClick(Sender: TObject); var gesamtmenge, i: integer; gesamtumsatz: real; begin gesucht:=strtointdef (eartikelnummer.text, 0); //Auslesen des Edits EArtikelnummer gesamtmenge:=0; //gesamtmenge initialisieren gesamtumsatz:=0; //gesamtumsatz initialisieren for i:=1 to anzahl do //Eingelesene Buchungssätze durchlaufen with buchungssatz[i] do if artikelnr = gesucht then //Wenn Artikelnummer des Buchungssatzes mit eingegebener Artikelnummer übereinstimmt... begin gesamtmenge:=gesamtmenge+menge; //Menge aggregieren gesamtumsatz:=gesamtumsatz+menge*preis; //Umsatz aggregieren end; emenge.text:=formatfloat ('#,##0', gesamtmenge); //Umgesetzte Menge ausgeben eumsatz.text:=formatfloat ('#,##0.00', gesamtumsatz); //Umsatz ausgeben eartikelnummer.setfocus; //Cursor ins Edit EArtikelnummer setzen end; //Wenn man auf Speichern klickt... procedure TFStatistik.BSpeichernClick(Sender: TObject); begin if gesucht > 0 //Wenn Auswertung mit gültiger Artikelnummer durchgeführt wurde... then begin if sdspeichern.execute then speichern (sdspeichern.filename); //Wenn im Speichern-Dialog Speichern angeklickt wurde: Statistik speichern end else //Wenn keine Auswertung mit gültiger Artikelnummer durchgeführt wurde... begin showmessage ('Keine Auswertung vorgenommen!'); //Fehlermeldung ausgeben eartikelnummer.setfocus; //Cursor ind Edit EArtikelnummer setzen end; end; //Wenn man auf Beenden klickt... procedure TFStatistik.BBeendenClick(Sender: TObject); begin application.terminate; //Anwendung beenden end; end. |
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs 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
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |