AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Artikelstatistik lädt File nicht korrekt ein?
Thema durchsuchen
Ansicht
Themen-Optionen

Artikelstatistik lädt File nicht korrekt ein?

Ein Thema von Hellraizer · begonnen am 6. Jan 2009 · letzter Beitrag vom 6. Jan 2009
Antwort Antwort
Hellraizer

Registriert seit: 18. Dez 2008
Ort: NRW
28 Beiträge
 
Delphi 2007 Professional
 
#1

Artikelstatistik lädt File nicht korrekt ein?

  Alt 6. Jan 2009, 14:54
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.
Angehängte Dateien
Dateityp: dfm artikel1_133.dfm (1,3 KB, 1x aufgerufen)
Dateityp: dpr artikel_455.dpr (252 Bytes, 1x aufgerufen)
Dateityp: exe artikel_139.exe (402,5 KB, 3x aufgerufen)
Dateityp: pas artikel1_165.pas (8,2 KB, 2x aufgerufen)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Artikelstatistik lädt File nicht korrekt ein?

  Alt 6. Jan 2009, 14:56
Wie äussert sich das nicht korrekt?
Markus Kinzler
  Mit Zitat antworten Zitat
Hellraizer

Registriert seit: 18. Dez 2008
Ort: NRW
28 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Artikelstatistik lädt File nicht korrekt ein?

  Alt 6. Jan 2009, 14:58
oh vergessen

[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]
  Mit Zitat antworten Zitat
Hellraizer

Registriert seit: 18. Dez 2008
Ort: NRW
28 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Artikelstatistik lädt File nicht korrekt ein?

  Alt 6. Jan 2009, 16:10
keiner eine idee? oder fehlen noch genauere angaben?
MFG Kevin
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Artikelstatistik lädt File nicht korrekt ein?

  Alt 6. Jan 2009, 16:12
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Hellraizer

Registriert seit: 18. Dez 2008
Ort: NRW
28 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Artikelstatistik lädt File nicht korrekt ein?

  Alt 6. Jan 2009, 18:26
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]
MFG Kevin
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Artikelstatistik lädt File nicht korrekt ein?

  Alt 6. Jan 2009, 19:07
Hallo Hellraizer,

in Deinem Programm werden Funktionen von Textdateien und Typisierte Dateien gemischt.

Tut. für Typisierte Dateien:

Tut. für typisierte Dateien:

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#8

Re: Artikelstatistik lädt File nicht korrekt ein?

  Alt 6. Jan 2009, 19:51
Hi!

Zitat von Hellraizer:
[edit]
habe das problem selbst gefunden und gelöst. danke für eure zeit =)
[/edit]
Es wäre trotzdem schön, wenn du uns dann an deiner Lösung teilhaben lassen könntest.
Falls mal jemand ein ähnliches Problem hat, ist er vllt. dankbar deine Lösung zu lesen.


Ciao, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es 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

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:17 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