Balkendiagramm Chart1 ausgeben



  • Bin Anfänger und habe den Debugger noch nie verwendet. Wie verwende ich den Debugger, um an die Informationen zu kommen???



  • Sedlag schrieb:

    Wie verwende ich den Debugger...???

    http://www.junix.ch/bcb/help/debug.html



  • 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?


  • Mod

    Hallo

    zeig uns mal wie die Daten in die Datei kommen
    bzw stell uns diese Datei zu Download irgendwohin
    dann ist es leichter nachzuvollziehen

    MfG
    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...


  • Mod

    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 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 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;
      }
     }
    }
    //---------------------------------------------------------------------------
    

  • Mod

    geloescht


  • Mod

    Hallo

    die Loesung ist ganz einfach

    Projekte->Optionen->erweiterte Compiler Optionen->Datenausrichtung
    auf Byte stellen

    MfG
    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...


Anmelden zum Antworten