 |
| |
|
|
 |
Autor |
Nachricht |
 |
| |
| Hellraizer |
#1| Verfasst am: 06.01.2009, 15:54 Titel: Artikelstatistik lädt File nicht korrekt ein? |
 |
 |
 |
|
Mitglied Alter: 19 Status: offline Beiträge: 28 angemeldet: 18.12.2008 Wohnort: NRW Delphi 2007 Professional

|
Sprache: Delphi (Win32) 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: | zusammenfalten | markieren | 1 · · · 5 · · · · 10 · · · · 15 · · · · 20 · · · · 25 · · · · 30 · · · · 35 · · · · 40 · · · · 45 · · · · 50 · · · · 55 · · · · 60 · · · · 65 · · · · 70 · · · · 75 · · · · 80 · · · · 85 · · · · 90 · · · · 95 · · · · 100 · · · · 105 · · · · 110 · · · · 115 · · · · 120 · · · · 125 · · · · 130 · · · · 135 · · · · 140 · · · · 145 · · · · 150 · · · · 155 · · · 159
| 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. |
| |
| [ An diesen Beitrag wurden eine oder mehrere Dateien angehängt. Zum Herunterladen bitte anmelden. ] |
|
 |
|
|
|
| |
| mkinzler |
#2| Verfasst am: 06.01.2009, 15:56 Titel: Re: Artikelstatistik lädt File nicht korrekt ein? |
 |
 |
 |
|
Moderator Beiträge: 27.704 angemeldet: 09.12.2005 Wohnort: Heilbronn Delphi 2010 Professional

|
Wie äussert sich das nicht korrekt? |
|
 |
|
|
|
| |
| Hellraizer |
#3| Verfasst am: 06.01.2009, 15:58 Titel: Re: Artikelstatistik lädt File nicht korrekt ein? |
 |
 |
 |
|
Mitglied Alter: 19 Status: offline Beiträge: 28 angemeldet: 18.12.2008 Wohnort: NRW Delphi 2007 Professional

|
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] |
Zuletzt bearbeitet von Hellraizer am 06.01.2009, 19:07, insgesamt 1-mal bearbeitet. |
 |
|
|
|
| |
| Hellraizer |
#4| Verfasst am: 06.01.2009, 17:10 Titel: Re: Artikelstatistik lädt File nicht korrekt ein? |
 |
 |
 |
|
Mitglied Alter: 19 Status: offline Beiträge: 28 angemeldet: 18.12.2008 Wohnort: NRW Delphi 2007 Professional

|
keiner eine idee? oder fehlen noch genauere angaben? |
 MFG Kevin |
 |
|
|
|
| |
| SirThornberry |
#5| Verfasst am: 06.01.2009, 17:12 Titel: Re: Artikelstatistik lädt File nicht korrekt ein? |
 |
 |
 |
|
Moderator Alter: 25 Status: offline Beiträge: 11.339 angemeldet: 23.09.2003 Wohnort: Bockwen Delphi 2006 Professional

|
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. |
 Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
Zuletzt bearbeitet von SirThornberry am 06.01.2009, 17:14, insgesamt 1-mal bearbeitet. |
 |
|
|
|
| |
| Hellraizer |
#6| Verfasst am: 06.01.2009, 19:26 Titel: Re: Artikelstatistik lädt File nicht korrekt ein? |
 |
 |
 |
|
Mitglied Alter: 19 Status: offline Beiträge: 28 angemeldet: 18.12.2008 Wohnort: NRW Delphi 2007 Professional

|
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
Zuletzt bearbeitet von Hellraizer am 06.01.2009, 19:37, insgesamt 1-mal bearbeitet. |
 |
|
|
|
| |
| Chemiker |
#7| Verfasst am: 06.01.2009, 20:07 Titel: Re: Artikelstatistik lädt File nicht korrekt ein? |
 |
 |
 |
|
aktives Mitglied Alter: 50 Status: offline Beiträge: 1.238 angemeldet: 14.08.2005 RAD-Studio 2009 Pro

|
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. |
 |
|
|
|
| |
| fkerber |
#8| Verfasst am: 06.01.2009, 20:51 Titel: Re: Artikelstatistik lädt File nicht korrekt ein? |
 |
 |
 |
|
CodeLib-Manager Alter: 23 Status: offline Beiträge: 5.896 angemeldet: 09.07.2003 Wohnort: Saarlouis Delphi 2007 Professional

|
Hi!
| Hellraizer hat folgendes geschrieben: | [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 |
 Die Signatur hat Urlaub... |
 |
|
|
|
 |
|
 |
| |
|
|
| |
 
|
|
| |
|
Du darfst keine Beiträge in dieses Forum schreiben. Du darfst auf Beiträge in diesem Forum nicht antworten. Du darfst Deine Beiträge in diesem Forum nicht bearbeiten. Du darfst Deine Beiträge in diesem Forum nicht löschen. Du darfst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum nicht posten. Du kannst Dateien in diesem Forum nicht herunterladen.
|
|
 |