peter123 Geschrieben 25. Oktober 2008 Geschrieben 25. Oktober 2008 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 Zitieren
robotto7831a Geschrieben 25. Oktober 2008 Geschrieben 25. Oktober 2008 Hallo, wenn Du uns die Fehlermeldungen gibst, dann wird der eine oder andere dir sicherlich einen Tip geben wo der Fehler steckt. Frank Zitieren
Klotzkopp Geschrieben 25. Oktober 2008 Geschrieben 25. Oktober 2008 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". Zitieren
peter123 Geschrieben 26. Oktober 2008 Autor Geschrieben 26. Oktober 2008 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 Zitieren
Klotzkopp Geschrieben 26. Oktober 2008 Geschrieben 26. Oktober 2008 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. Zitieren
peter123 Geschrieben 26. Oktober 2008 Autor Geschrieben 26. Oktober 2008 Wie ihr sehen könnt, hab ich ja das Programm eig schon fertig geschrieben. Das war eine Aufgabe und die habe ich unserem Info-Lehrer gezeigt. Der meinte dann nur ich soll es in Klassen schreiben und das dann abgeben. Deswegen auch die Hilfe hier. mfg peter Zitieren
robotto7831a Geschrieben 26. Oktober 2008 Geschrieben 26. Oktober 2008 Nenn uns eine gescheite Fehlermeldung und dir wird sicherlich geholfen. Frank Zitieren
peter123 Geschrieben 26. Oktober 2008 Autor Geschrieben 26. Oktober 2008 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 Zitieren
Klotzkopp Geschrieben 27. Oktober 2008 Geschrieben 27. Oktober 2008 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. Zitieren
Empfohlene Beiträge
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.