Balkendiagramm Chart1 ausgeben
-
Bin Anfänger und habe den Debugger noch nie verwendet. Wie verwende ich den Debugger, um an die Informationen zu kommen???
-
-
Ich bin mir nicht sicher aber ich glaube, er liest die Daten schon falsch ein. Kann ich Dir die Datei mal schicken? Ich glaube, ein Experte kann damit mehr anfangen...
-
Noch ein Nachtrag:
Wenn ich die Datei mit dem Editor ansehe ist der Inhalt folgender:
Wintergarten €ËÝ@ÜÖÖÖÖUü@ Y@ ÀëAÀ D‘@Thekla Å@ÍÌÌÌÌŒh@ €E@ Eð@& ˆˆ@Riemann €FÁ@ d@ €B@ À ì@µ @@Taro €çÖ@ z@ ÀU@ v A$ 8@Breitenfelder €‡É@ m@ €H@ àŠò@ê €†@Renoir Á@33333Óc@ B@ ?ë@E ä@
Ist also wirklich nur ne Abfolge von Bits.
Die Datei wird dann wie oben eingelesen. Ich denke, dass das Problem ist, das Chart die Doublewerte als Bitfolge nicht interpretieren kann und die erst noch irgendwie umgewandelt werden müssen???
Wer kann mir helfen?
-
Hallo
zeig uns mal wie die Daten in die Datei kommen
bzw stell uns diese Datei zu Download irgendwohin
dann ist es leichter nachzuvollziehenMfG
Klaus
-
Die Datei ist so vorgegeben. Meine Aufgabe ist es nur, sie nach der beschriebenen Aufgabenstellung auszuwerten.
@Klaus: Kann ich Dir die Datei per Mail zukommen lassen? Habe keine andere Möglichkeit...
-
Hallo
dann muss es doch auch eine Beschreibung dieser Datei geben
daraus sollte hervorgehen in welchem Format diese Daten vorliegen
(ich glaube, das ist dein Problem)MfG
Klaus
-
In der Aufgabenstellung steht, dass die Komponenten der Datei so strukturiert sind, wie ich es in meinem ersten Beitrag geschrieben habe. Das Format der Daten wird nicht erwähnt.
Ich habe folgenden Quelltext für das Programm:
#include <vcl.h>
#pragma hdrstop
#include <stdlib.h> //wegen exit
#include <fcntl.h> //wegen _fmode, open -> Dateiarbeit
#include <io.h> //wegen open -> Dateiarbeit#include "Unit1.h" //Header-Datei einschließen
#define Satzmax 10 //Definiere maximale Satzlänge mit dem Wert 10#pragma package(smart_init)
#pragma resource "*.dfm"//Deklarationen
typedef struct satztyp { //Definition Datensatz
char Filiale[21];
double Umsatz;
double Bestand;
double Beschaeftigte;
double Loehne;
unsigned long Quadratmeter;
double Anlagevermoegen;
} SFiliale;typedef SFiliale liste[Satzmax];
TForm1 Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender)
{
exit(0); //Nutzergesteuerter Programmabbruch
}
//---------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender)
{int i=0; //Zählvariable
int handle=1; //Variable für Dateiarbeit
liste f1; //struct für Aufnahme der Datei//Dateiarbeit
_fmode=O_BINARY; //Datei im Binärmodus öffnen
if ((handle=open("Handel.dtc",O_RDONLY))==-1) //Lesezugriff für Datei
{Application->MessageBox ("Datei kann nicht geöffnet werden","Fehler",MB_OK); //Fehlermeldung
exit(0);}
read (handle,f1,sizeof(f1)); //Lesen von "f1"-Bytes aus der durch "handle" bezeichneten Datei in den Speicherbereich "f1"
close (handle); //Schließen der durch handle bezeichneten Datei
//Ende DateiarbeitSeries1->Clear(); //Leeren des Diagramms für jedes neue Ereignis
for (i=0;i<Satzmax;i++) //for-Schleife zum Abarbeiten aller Datensätze
{
switch (RadioGroup1->ItemIndex) //Mehrfach-Auswahl RadioGroup1
{
case 0: {
Series1->AddBar(f1[i].Umsatz,f1[i].Filiale,clRed); //Umsatzvergleich
}
break;case 1: {
Series1->AddBar(f1[i].Bestand,f1[i].Filiale,clBlue); //Bestandsver.
}
break;case 2: {
Series1->AddBar(f1[i].Loehne,f1[i].Filiale,clGreen); //Lohnvergleich
}
break;
}
}
}
//---------------------------------------------------------------------------Müsste dieser Code so funtkionieren oder müssen die double Werte zur Darstellung im Balkendiagramm noch irgendwie konvertiert werden? Wie gesagt... ich bekomme da nur Kauderwelsch im Diagramm angezeigt...
-
Nur mal als Tipp (klingt besser als "Beschwerde"
): Verwende doch beim Posten von Code die Code-Tags! (unter den Smileys)
-
so besser???

#include <vcl.h> #pragma hdrstop //#include <stdio.h> //wegen sprintf #include <stdlib.h> //wegen exit #include <fcntl.h> //wegen _fmode, open -> Dateiarbeit #include <io.h> //wegen open -> Dateiarbeit #include "Unit1.h" //Header-Datei einschließen #define Satzmax 10 //Definiere maximale Satzlänge mit dem Wert 10 #pragma package(smart_init) #pragma resource "*.dfm" //Deklarationen typedef struct satztyp { //Definition Datensatz char Filiale[21]; double Umsatz; double Bestand; double Beschaeftigte; double Loehne; unsigned long Quadratmeter; double Anlagevermoegen; } SFiliale; typedef SFiliale liste[Satzmax]; TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { exit(0); //Nutzergesteuerter Programmabbruch } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { int i=0; //Zählvariable int handle=1; //Variable für Dateiarbeit liste f1; //struct für Aufnahme der Datei //Dateiarbeit _fmode=O_BINARY; //Datei im Binärmodus öffnen if ((handle=open("Handel.dtc",O_RDONLY))==-1) //Lesezugriff für Datei Handel.dtc {Application->MessageBox ("Datei kann nicht geöffnet werden","Fehler",MB_OK); //Fehlermeldung exit(0);} read (handle,f1,sizeof(f1)); //Lesen von "f1"-Bytes aus der durch "handle" bezeichneten Datei in den Speicherbereich "f1" close (handle); //Schließen der durch handle bezeichneten Datei //Ende Dateiarbeit Series1->Clear(); //Leeren des Diagramms für jedes neue Ereignis for (i=0;i<Satzmax;i++) //for-Schleife zum Abarbeiten aller Datensätze { switch (RadioGroup1->ItemIndex) //Mehrfach-Auswahl für Alternativen von RadioGroup1 { case 0: { Series1->AddBar(f1[i].Umsatz,f1[i].Filiale,clRed); //Umsatzvergleich } break; case 1: { Series1->AddBar(f1[i].Bestand,f1[i].Filiale,clBlue); //Bestandsvergleich } break; case 2: { Series1->AddBar(f1[i].Loehne,f1[i].Filiale,clGreen); //Lohnvergleich } break; } } } //---------------------------------------------------------------------------
-
geloescht
-
Hallo
die Loesung ist ganz einfach
Projekte->Optionen->erweiterte Compiler Optionen->Datenausrichtung
auf Byte stellenMfG
Klaus
-
Einfach aber genial...
Mein Riesendank an Klaus. Da wäre ich wohl noch dran verzweifelt...
-
mal ein paar Fragen:
Du willst ein Balkendiagramm haben, was dir für jede Filiale 1 bis 3 Balken anzeigt, wo der Umsatz rot, der Bestand blau und die Löhne grün dargestellt werden sollen, oder versteh ich das falsch?
Arbeitest du mit TChart?
Wenn ja: Warum machst du den Vergleich aller drei Werte (Umsatz, Bestand und Löhne) in eine Series? ich würd dafür 3 Series verwenden
und ausserdem ist es vielleicht sinnvoll die for-Schleife in die Case-Anweisungen zu legen
Grüße
Linnea
-
Nee... hat sich schon geklärt!
Es sollen jeweils Umsatz, Bestand und Löhne für die 10 Filialen gegenübergestellt werden. Mir ging es nur um die richtige Darstellung der Werte...