Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

bassdscho

Alter Hase

  • »bassdscho« ist der Autor dieses Themas

Beiträge: 1 056

Wohnort: Heuchlingen

Beruf: Student - Technische Informatik

  • Private Nachricht senden

1

05.03.2006, 02:07

Actions Gedächtnis implementieren, aber wie?? ([C# + .NET2)

Hi,

ich schreib gerade ein Programm mit C# und dem .NET 2.0 Framework. In dem will ich so ein "Actions Gedächtnis" implementieren. Die meisten Programme haben doch unter dem Menüpunkt Bearbeiten Zurück und Wiederholen. Das wollte ich heut auch bei meinem Programm mit einbauen.

folgendes Problem:
ich hab mit dem "ref" 4h herum jongliert und dann es über klassen (für klassen gilt ja call by reference) versucht. Ich weiß aber nicht wie ich mir die Speicherstelle der Variable die ich verändern will merken kann.

So wollte ich das eigentlich machen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
string test = "Bla";

merkeAction("hallo", // neuer Wert

    test); // Variable die verändert wird


// jetzt wird der Zurück Button gedrückt


undo(test);

// jetzt sollte in test eigentlich wieder "Bla" stehen


Ich wollt mir ne klasse schreiben die mir die Daten speichert und die die Methoden beritstellt. Aber ich bekomms ein fach nicht hin :(
Verlierer jammern immer von wegen ihr bestes!
Sieger gehen nach Hause und vögeln die Ballkönigin!

Anonymous

unregistriert

2

05.03.2006, 10:39

Ich versteh nicht so genau was du machen willst?

Möchtest Du einen AliasReciever bauen?

Also wo Du sagen kannst, "Speichere diese Funktion unter diesem Alias ab, diese Funktion unter diese Alias usw."

Und dann irendwann im Programm sagst Du "So jetzt ruf die Funktion anhand dieses Aliases auf".

Meinst Du sowas?

bassdscho

Alter Hase

  • »bassdscho« ist der Autor dieses Themas

Beiträge: 1 056

Wohnort: Heuchlingen

Beruf: Student - Technische Informatik

  • Private Nachricht senden

3

05.03.2006, 16:43

Sowas nur mit Variablen nicht mit Funktionen.

Ich will irgendwann einer Variable einen Wert zuweisen. Die Variable, der alte Wert und der neue Wert müssen gespeichert werden damit ich zu einem späteren Zeitpunkt der Varible wieder ihren alten wert geben kann.

Beispiel:
Ich hab eine Textbox
in die Textbox schreibt mein User jetzt einen Text
dann ändert er den Text um
jetzt fällt ihm ein das die erste Eingabe doch richtig war
er geht im Menü auf Bearbeiten und dann auf Zurück (Strg + Z)
die erste Eingabe wird wieder hergestellt

Meine Überlegung war halt das ich dazu den namen (speicheradresse) der Varible brauch. Wenn jemand einen einfacheren Ansatz hat, nur her damit.
Verlierer jammern immer von wegen ihr bestes!
Sieger gehen nach Hause und vögeln die Ballkönigin!

bassdscho

Alter Hase

  • »bassdscho« ist der Autor dieses Themas

Beiträge: 1 056

Wohnort: Heuchlingen

Beruf: Student - Technische Informatik

  • Private Nachricht senden

4

07.03.2006, 01:25

hat keiner eine Ahnung wie man das lösen könnte. mir würd schon ein ansatz reichen, er sollte nur nicht das gleiche problem wie meiner haben ^^
Verlierer jammern immer von wegen ihr bestes!
Sieger gehen nach Hause und vögeln die Ballkönigin!

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

5

07.03.2006, 02:01

ka ob das funzt, nur so ne idee

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
template <class T>
class foo
{
private:
void* bar;
void* bar2;
public:
void procede(T* fubar) {delete bar2; bar2 = bar; bar = (void*)fubar;}
T* undo() {delete bar; /*oder in redo zeiger stecken*/ bar = bar2; return static_cast<T*>(bar);}
}

bar is der aktuelle stand und bar2 die gesavte.. wenn du mehr undo schritte und mehr objekte hast musste halt mehrdimensional machen..

Is schon spät^^

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

6

07.03.2006, 02:03

ach c#
ka^^
vielleicht kannste das ja umcoden wenn das überhaupt so geht

bassdscho

Alter Hase

  • »bassdscho« ist der Autor dieses Themas

Beiträge: 1 056

Wohnort: Heuchlingen

Beruf: Student - Technische Informatik

  • Private Nachricht senden

7

07.03.2006, 02:25

öh kp ^^
mit templates hab ich mich noch nicht so beschäftigt. schon gar nicht in C#. Jetzt muss ich erst mal mein anderes Problem lösen (siehe andern Thread von mir der inkürze entsteht ^^)

Dann versuch ich das mal
Verlierer jammern immer von wegen ihr bestes!
Sieger gehen nach Hause und vögeln die Ballkönigin!

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

8

07.03.2006, 11:56

Prinzipiell ist das schon absolut korrekt bzw. realisierbar, wie in spiks Ansatz dargestellt: Generell speicherst Du in einer Undo-Liste nämlich nicht die Aktionen selbst, sondern die jeweiligen Zustände, die dann wieder hergestellt werden können. Die Aktionen kannst Du ggf. schon mitspeichern, aber ohne dabei die tatsächlich durchgeführten Operationen zu speichern, die "rückgängig gemacht" werden, sondern nur die Aktionsbezeichnung oder so. Es wird im Endeffekt nicht wirklich etwas in dem Sinne rückgängig gemacht, dass die inverse Operation durchgeführt wird, sondern es werden stumpf gespeicherte vorherige Zustände wieder hergestellt.

bassdscho

Alter Hase

  • »bassdscho« ist der Autor dieses Themas

Beiträge: 1 056

Wohnort: Heuchlingen

Beruf: Student - Technische Informatik

  • Private Nachricht senden

9

07.03.2006, 12:03

ja genau so hab ich mir das auch gedacht ^^

hab das am Anfang wohl nicht verständlich rübergebracht. Ich wollte auch nur den neuen/alten Wert, nen Text und die Var speichern.

Jo gut dann mach ich mich mal demnächst an die Templates. Ich berichte dann von meinen Erlebnissen.
Verlierer jammern immer von wegen ihr bestes!
Sieger gehen nach Hause und vögeln die Ballkönigin!

Werbeanzeige