Zum Inhalt springen

Klassen machen bitte um erklärung


peter123

Empfohlene Beiträge

Das Programm:


//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop


#include "Ueb1_Unit1.h"

#include "stdio.h"

#include <sys/stat.h>

#include <io.h>

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TfrmMain *frmMain;

int Datenzeiger=0;

bool fileexists=false;

FILE *meineDatei;

int timer = 1;

int zahl;

int temp=0;

int tempp=0;   // alle variablen verändern!!!!!!!


//---------------------------------------------------------------------------

__fastcall TfrmMain::TfrmMain(TComponent* Owner)

        : TForm(Owner)

{

meineDatei=fopen("ueb1.dat","r+b");

if (meineDatei == NULL)

btnLesen->Enabled = false;

else{fileexists=true;}



}

//---------------------------------------------------------------------------

__fastcall TfrmMain::~TfrmMain() {

  fclose(meineDatei);

}

void __fastcall TfrmMain::btnSchreibenClick(TObject *Sender)

{

if(fileexists){

Reset();

}

fseek(meineDatei,0,SEEK_SET);

int zahl=StrToInt(edtDaten->Text);

fwrite(&zahl,sizeof(zahl),1,meineDatei);

}

//---------------------------------------------------------------------------

void __fastcall TfrmMain::btnLesenClick(TObject *Sender)

{

Reset();

Memo1->Clear();

struct stat Status;

stat("ueb1.dat", &Status);

int FSize=Status.st_size;

for(int i=0;i<FSize/sizeof(zahl);i++){

fread(&zahl,sizeof(zahl),1,meineDatei);

if(zahl!=0){

Memo1->Lines->Add(zahl);

timer++;

}

}

}

//---------------------------------------------------------------------------

void __fastcall TfrmMain::FormClose(TObject *Sender, TCloseAction &Action)

{

 fclose(meineDatei);

}

//---------------------------------------------------------------------------


void __fastcall TfrmMain::Button1Click(TObject *Sender)

{

fclose(meineDatei);

DeleteFile("ueb1.dat");

meineDatei=fopen("ueb1.dat","a+b");

Reset();


}

//---------------------------------------------------------------------------

void TfrmMain::Reset(){

fclose(meineDatei);

meineDatei=fopen("ueb1.dat","a+b");

btnLesen->Enabled = true;

}

void __fastcall TfrmMain::UpDown1ChangingEx(TObject *Sender,

      bool &AllowChange, short NewValue, TUpDownDirection Direction)

{

struct stat Status;

stat("ueb1.dat", &Status);

int FSize=Status.st_size;

if(NewValue<=UpDown1->Max && NewValue>0)

{

switch (Direction)

{

case updUp :

if(temp<=FSize){

fseek(meineDatei,temp,SEEK_SET);

fread(&zahl,sizeof(zahl),1,meineDatei);

tempp = sizeof(zahl);

temp += sizeof(zahl);

Edit1->Text=zahl;

break;

}

case updDown :

if(ftell(meineDatei)>4){

temp -=tempp;

fseek(meineDatei,temp-tempp,SEEK_SET);

fread(&zahl,tempp,1,meineDatei);

Edit1->Text=zahl;}

}

}

}



//---------------------------------------------------------------------------

Quelltext/Headerdatei
//---------------------------------------------------------------------------


#ifndef Ueb1_Unit1H

#define Ueb1_Unit1H

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <ExtCtrls.hpp>

#include <ComCtrls.hpp>

//---------------------------------------------------------------------------

class TfrmMain : public TForm

{

__published:	// Von der IDE verwaltete Komponenten

        TButton *btnSchreiben;

        TButton *btnLesen;

        TEdit *edtDaten;

        TMemo *Memo1;

        TButton *Button1;

        TUpDown *UpDown1;

        TEdit *Edit1;

        void __fastcall btnSchreibenClick(TObject *Sender);

        void __fastcall btnLesenClick(TObject *Sender);

        void __fastcall FormClose(TObject *Sender, TCloseAction &Action);

        void __fastcall Button1Click(TObject *Sender);

        void __fastcall UpDown1ChangingEx(TObject *Sender,

          bool &AllowChange, short NewValue, TUpDownDirection Direction);

private:	// Anwender-Deklarationen

public:		// Anwender-Deklarationen

        void Reset();

        __fastcall TfrmMain(TComponent* Owner);

        __fastcall TfrmMain::~TfrmMain();


};

//---------------------------------------------------------------------------

extern PACKAGE TfrmMain *frmMain;

//---------------------------------------------------------------------------

#endif

Das ist ein nettes Programm zum Speichern und Entfernen von Textdateien.

Nun möchte ich dieses Programm noch verbessern, indem ich es in Klassen schreiben. Natürlich habe ich es schon vorher probiert. Doch ging es nicht wirlich. Es kamen dauernt i.welche Fehlermeldungen. Könnte bitte einer von euch mir helfen und sagen, wodrauf ich achten muss. Oder vllt könnte von euch auch einer einen keinen quelltext zur hilfe geben.

mfg

peter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das ist ein nettes Programm zum Speichern und Entfernen von Textdateien.

Nun möchte ich dieses Programm noch verbessern, indem ich es in Klassen schreiben.

Was heißt denn "in Klassen schreiben" für dich?

Das Programm hat bereits eine Klasse, nämlich TfrmMain.

Falls du meinst, dass du das Programm objektorientiert machen willst, dazu gehört erheblich mehr, als nur den Code "in Klassen zu schreiben".

Link zu diesem Kommentar
Auf anderen Seiten teilen

hiho,

Ich wollte eine Klasse

class za:public:int zahl;

usw.

erstellen.

Nun ging dies aber nicht. Deswegen schrieb ich hier meinen code rein, damit ihr mir vllt erklärt wie ich dies bei dem Programm am besten schreibe ob ich in die vorhandene Klasse schreiben soll oder eine neue Klasse machen soll.

Dabei habe ich gehofft, ihr würdet einen kleiner code als Hilfe mir geben.

Denn eig muss man doch nur die Klasse schreiben und dann public und private und jeweils die Komponeten in private oder public. Jedoch ging dies nicht.

Vllt kann mir nun einer helfen.

mfg

peter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich wollte eine Klasse

class za:public:int zahl;

usw.

erstellen.

Du kannst nicht von int erben, nur von anderen Klassen oder Strukturen.

Nun ging dies aber nicht.
Für die Zukunft: Das ist keine ausreichende Fehlerbeschreibung, mit "geht nicht" kann niemand etwas anfangen. Wenn du Fehlermeldungen bekommst, dann nenne sie.

Deswegen schrieb ich hier meinen code rein, damit ihr mir vllt erklärt wie ich dies bei dem Programm am besten schreibe ob ich in die vorhandene Klasse schreiben soll oder eine neue Klasse machen soll.
Welchen Zweck soll diese Klasse denn erfüllen? Das sollte beim Design im Vordergrund stehen. Klassen sind ja kein Selbstzweck.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Fehlermeldungen:

[C++ Fehler] stdio.h(355): E2040 Deklaration nicht ordnungsgemäß abgeschlossen

[C++ Fehler] stdio.h(355): E2190 Unerwartetes }

[C++ Fehler] stdio.h(355): E2190 Unerwartetes }

[C++ Fehler] stdio.h(362): E2316 'FILE' ist kein Element von 'std'

[C++ Fehler] stdio.h(362): E2272 Bezeichner erwartet

[C++ Fehler] stdio.h(363): E2316 '__getStream' ist kein Element von 'std'

[C++ Fehler] stdio.h(363): E2272 Bezeichner erwartet

[C++ Fehler] stdio.h(364): E2316 '_fcloseall' ist kein Element von 'std'

....

Das ist nur ein Teil der Fehlermeldungen.

Ich habe eine zweite Klasse erstellt und die dann untergeordnet in public und provate.... und habe int zahl in publich geschrieben. Also vllt könnt ihr mir jetzt mal helfen ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das ist nur ein Teil der Fehlermeldungen.
Wie es aussieht, hast du beim Einbinden von stdio.h etwas falsch gemacht.

Ich habe eine zweite Klasse erstellt und die dann untergeordnet in public und provate.... und habe int zahl in publich geschrieben. Also vllt könnt ihr mir jetzt mal helfen ;)

Tja, ohne den Code lässt sich da nicht viel machen. Hellsehen können wir leider noch nicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...