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 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