Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> Hallo André, > > vielen Dank für Deine Unterstützung! Das war genau das, was ich gebraucht habe. > > Das Vorgehen mit den Arrays habe ich nun verstanden. Ja, ich brauche sie so, wie Du es beschrieben > hast. Die Definition passe ich jetzt bei mir mal an. > > Die Inline Copy Funktion kann ich so übernehmen? > > Ich bastele jetzt mal eine Anfüge, Lese und Löschfunktion und komme mit dem Ergebnis > oder weiteren Problemen dann wieder hier vorbei! > > Schönes Wochenende, > > Detlef > > > > > Hallo Detlef, > > > > wenn nicht unbedingt erforderlich, sollte man nicht ständig umkopieren, > > sondern eher ein Index-Array erstellen in denen nur die Indizies sortiert werden. > > > > Aber nun erstmal Punkt für Punkt: > > Die Definition des eigenen Datentyps. > > Du hast einen Datentyp Datensatz definiert, der vier Arrays mit jeweils > > 50 Elementen hat. Ich denke, daß Du das so nicht definieren wolltest, > > sondern ein Datensatz je ein Feld time, aktor, modi und wert haben soll. > > Dvon dann 50 Datensätze. > > Die Definition muß dann folgendermaßen aussehen: > > <code> > > type Datensatz > > { long time; > > int aktor; > > int modi; > > int wert; > > } > > > > Datensatz test[50]; > > </code> > > > > Der nächste Punkt ist das Kopieren von eigenen Datentypen. > > Das geht leider nicht mit einfacher Zuweisung. > > Für das OS sind eigene Datentypen einfach nur Arrays. > > Zum Kopieren muß man die Funktion copypos des Moduls mem.c2 > > etwas mißbrauchen, indem man eine eigene Funktion zusammenstellt. > > Das würde dann so aussehen: > > <code> > > inline function copyDatensatz ( Datensatz dest[], int destpos, Datensatz src[], int srcpos, int len ) > > { > > inline vmcodes.VM_INLINE_SYSCALL+mem.Segment; > > inline mem._COPY; > > } > > </code> > > > > Beim Aufruf muß man aber etwas rechnen oder eine Hilfsfunktoin verwenden. > > Ein Datensatz besteht hier aus 10 Byte. (long(4) + 3x int(2)) > > Will man nun test[25] auf test[20] kopieren, schaut das so aus: > > <code> > > copyDatensatz(Datensatz, 20*10, Datensatz, 25*10, 10); > > </code> > > Wichtig dabei ist immer, daß hier in Byte gerechnet werden muß. > > Als Anmerkung: Bei zusammengesetzten Datentypen - besonders bei > > mehr Mehrdimensionalen - immer auf die Größe achten. > > "Datensatz" ist eindimensional und hat hier 500 Byte, also kein Problem. > > > > > > Statt nun im Array selbst umzukopieren kann man sich auch ein Index-Array anlegen, > > welches man zum Sortieren nutzt. > > Der Vorteil ist, wenn man verschiedene Sortierungen benötigt, muß man nicht immer > > am Datensatz umkopieren, sondern man kann verschiende Index-Arrays nutzen. > > > > <code> > > Datensatz test[50]; // 50 Datensätze > > byte Index[50]; //Arrays mit Index-Positionen, je nach Sortierung > > </code> > > Wir brauchen hier zwar 50 Byte mehr RAM, sind aber flexibler in der Nutzung. > > > > Unsortiert weisen wir Index[] die Werte 0 bis 49 als Initialisieung zu: > > <code> for i = 0 ... 49 Index[i]=i;</code> > > Der Zugriff auf Datensatz erfolgt immer so: > > <code>Datensatz[Index[Position]]</code> > > > > Wenn nun Position 25 mit 20 getauscht werden soll, braucht man die Werte > > nur Index zuweisen: > > <code>Index[20]=25; > > Index[25]=20;</code> > > Und schon sind die Positionen bei Zugriff über <code>Datensatz[Index[Position]]</code> getauscht. > > > > > > > > MfG André H. > > > > > > > Guten Morgen! > > > > > > Ich habe mal Zeit für eine Optimierung der Haussteuerung und bräuchte etwas Unterstützung. > > > > > > Ich möchte "datenbankähnlich" Einträge in einem Array sortieren/indizieren. > > > > > > Dazu habe ich zwei Fragen: > > > > > > 1. Hat sich jemand damit schonmal befasst? > > > > > > 2. Folgende Detailfunktion würde mich schon weiterbringen: > > > > > > <code> > > > Type Datensatz > > > { long time[50]; > > > int aktor[50]; > > > int modi [50]; > > > int wert [50]; > > > } > > > > > > Datensatz test; > > > > > > function copy() > > > { > > > test[20] = test[25]; // ich möchte also einen DS im Array "test" an eine andere Position kopieren > > > > > > } > > > > > > > > > </code> > > > > > > Für konstruktive Hilfe wäre ich sehr dankbar. > > > > > > Beste Grüße > > > > > > Detlef > > > > > > > > > > > > > > > > > >
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB