006
31.03.2004, 18:36 Uhr
~RIP
Gast
|
WOW! @Windalf: Programmierst du beruflich? Scheinst dich ja ziemlich gut auszukennen! Danke für die Hilfe! (:danke
Der Code kann jetzt alles machen - so wie ich es brauche ...
Wäre nett wenn ihr euch das noch mal anschaut ... für mich ist das wie gesagt alles ziemlich neu mit dieser Speicherreservierung ... Da sind bestimmt noch ein paar uneffektive Sachen oder sogar kleine Fehler drin ... funktionieren tut es bei mir aber
C++: |
// Header: "Classes.h" class Scroller { private: int x; int y; int values; float size; char * name; public: Scroller(int _x, int _y, int _values, float _size, char *_name) { x=_x; y=_y; values=_values; size=_size; name=new char[strlen(_name)+1]; strcpy(name,_name); } ~Scroller() { delete []name; } int X() {return x;} int Y() {return y;} int Values() {return values;} float Size() {return size;} char* Name() {return name;} };
// Eine Klasse zum Verwalten von Scrollerobjekten class ScrObj { private: Scroller **scArray,**tmp; int Scramount; // Anzahl der Scroller / Größe von scArray int loop; // hmm - das ist bestimmt der Schalter für den Rasenmäher! :) public:
ScrObj(int Anzahl) // Konstruktor [Anzahl == Arraygröße] { Scramount=Anzahl; scArray=new Scroller*[Scramount]; for (loop=0;loop<Scramount;loop++) { // neue Scrollerobjekte mit Standardwerten erzeugen scArray[loop]=new Scroller(0,0,0,0.0f,"Scroller"); } } ~ScrObj() // Destruktor { for(loop=0;loop<Scramount;++loop) delete scArray[ loop ]; delete [] scArray; }
void ChangeScrValues(int Scrnr,int x,int y, int values, float size, char *name) { scArray[Scrnr]=new Scroller(x,y,values,size,name); }
void AddScr(int x,int y, int values, float size, char *name) // 1 Scroller hinzufügen { tmp=new Scroller*[Scramount+1]; for(loop=0;loop<Scramount;++loop) tmp[loop]=scArray[loop]; //kopieren der alten zeiger ... delete [] scArray; //alten speicher freigeben scArray=tmp; //scArray zeigt auf den neuen speicher
scArray[Scramount]= new Scroller(x,y,values,size,name); //neues objekt einfügen ... Scramount++; }
void KillScr(int Scrnr) // 1 bestimmten Scroller entfernen { // den zu löschenden Scroller mit den Daten des nachfolgenden Scrollers überschreiben // alles nach vorne rücken und dann das letzte Array löschen for (loop=Scrnr;loop<Scramount-1;loop++) { scArray[loop]=scArray[loop+1]; } delete scArray[Scramount-1]; Scramount--; } };
|
und der Maincode ...
C++: |
#include <conio.h> #include "stdafx.h" #include "Classes.h"
int main() { ScrObj Scr(2); // Ein "Scroller-Verwaltungs-Objekt" der Klasse ScrObj erstellen - oder so ähnlich :)
Scr.ChangeScrValues(0,64,64,255,1.0f,"Testscroller 1"); // Werte eines Scrollers ändern
Scr.AddScr(64,64,255,1.0f,"Testscroller 3"); // einen neuen Scroller hinzufügen
Scr.KillScr(0); // "Testscroller 1" löschen
//while(1) //{ //} return 0; }
|
|