![]() |
Artikelstatistik lädt File nicht korrekt ein?
Liste der Anhänge anzeigen (Anzahl: 4)
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. |
Re: Artikelstatistik lädt File nicht korrekt ein?
Wie äussert sich das nicht korrekt?
|
Re: Artikelstatistik lädt File nicht korrekt ein?
oh vergessen :D
[edit]wenn man den ausrechnen button,TFStatistik.BLadenClick drückt dann wird/bleibt eartikelnummer(edit1) leer, emenge.text(edit2) wird 0 und eumsatz.text(edit3) wird 0,00 sons passiert nix. das lässt sich dann auch nicht speichern.[/edit] |
Re: Artikelstatistik lädt File nicht korrekt ein?
keiner eine idee? oder fehlen noch genauere angaben?
|
Re: Artikelstatistik lädt File nicht korrekt ein?
Könntest du bitte das pushen unterlassen? :) Bist du denn mal Schritt für Schritt das ganze durchgegangen (mit Hilfe des Debuggers und F7 + F8 )?
Ein abschreckender Punkt könnte deine Benennung sein. Wenn jemand Button3 etc. liest ist er nicht so schnell gewillt zu helfen. Denn man erwartet wenn man sich die Arbeit macht dir zu helfen das du dir die Arbeit gemacht hast Variablen etc. zu benennen. |
Re: Artikelstatistik lädt File nicht korrekt ein?
tut mor leid. hab die oben das mit den variablen geändert.
[edit] habe das problem selbst gefunden und gelöst. danke für eure zeit =) [/edit] |
Re: Artikelstatistik lädt File nicht korrekt ein?
Hallo Hellraizer,
in Deinem Programm werden Funktionen von Textdateien und Typisierte Dateien gemischt. Tut. für Typisierte Dateien: ![]() Bis bald Chemiker |
Re: Artikelstatistik lädt File nicht korrekt ein?
Hi!
Zitat:
Falls mal jemand ein ähnliches Problem hat, ist er vllt. dankbar deine Lösung zu lesen. Ciao, Frederic |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:11 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