Ich habe mein Kotfragment wiedergefunden, nach mehr als zwei Jahren! Ist das nicht schön?! Obwohl ich es eigentlich jetzt gar nicht brauche, lege ich es mal unter diesen Stichwort ab, doppelt hält besser, und in DasOffizielleWebtagebuchDerGrobianismusliga gehört es ja eigentlich auch gar nicht:
#include <iostream.h>
#include <string.h>
struct kapo {
int nr;
char title[50];
char desc[500];
};
struct kapo* pArrkapo;
struct kapo* pArrHilfskapo;
void main (void)
{
int KatLen = 10; // KatLen; zu Beginn Länge des Recordsets
int vict = 0;
int bGefunden = 0;
pArrkapo = new struct kapo[KatLen];
// Einmal fuellen, wuerde eigentlich aus Recordset kommen
for (int i = 0; i<KatLen; ++i)
{
pArrkapo[i].nr = i*10;
strcpy(pArrkapo[i].title, »Sinnloser Titel«);
strcpy(pArrkapo[i].desc, »Dies ist eine laengere Beschreibung.«);
}
while (1)
{
// Zu Beginn der Schleife aktuellen Stand ausgeben
for (i = 0; i<KatLen; ++i)
{
cout << »Nummer: « << pArrkapo[i].nr << endl;
// cout << »Titel: « << pArrkapo[i].title<< endl;
// cout << »Beschreibung: « << pArrkapo[i].desc << endl;
}
cout << »Welche Katalogposition soll gekuerzt werden? «;
cin >> vict;
// Nach zu loeschender ID suchen
for (i = 0; i<KatLen; ++i)
{
// Zu loeschende Katalogposition markieren
if (pArrkapo[i].nr == vict)
{
pArrkapo[i].nr = -1;
bGefunden = 1;
break;
}
}
if (bGefunden == 0)
{
cout << »Katalog-ID« << vict << » wurde nicht gefunden« << endl;
}
else
{
pArrHilfskapo = new struct kapo[--KatLen cout << »Hilfsarray ist reserviert ... « << endl;
cout << »KatLen ist jetzt « << KatLen << endl;
// Brauche ich als Index-Zähler fuer den gekuerzten Array
int j = 0;
// KatLen ist gekürzt, ich muss aber aus dem ungekuerzten Array kopieren
for (i = 0; i<(KatLen + 1); ++i)
{
// Alles außer markierter Katalogposition wird kopiert
if (pArrkapo[i].nr != -1)
{
pArrHilfskapo[j].nr = pArrkapo[i].nr;
strcpy(pArrHilfskapo[j].title, pArrkapo[i].title);
strcpy(pArrHilfskapo[j].desc, pArrkapo[i].desc);
++j;
}
}
// j sofort wieder zurücksetzen
j = 0;
// Es wurde kopiert, Originalarray kann also gelöscht ...
delete pArrkapo;
// ... und fuer die neue Laenge wieder angefordert werden.
pArrkapo = new struct kapo[KatLen];
// Aus dem Hilfsarray in das gekuerzte Original kopieren
for (i = 0; i<KatLen; ++i)
{
pArrkapo[i].nr = pArrHilfskapo[i].nr;
strcpy(pArrkapo[i].title, pArrHilfskapo[i].title);
strcpy(pArrkapo[i].desc, pArrHilfskapo[i].desc);
}
// Jetzt kann Hilfsarray geloescht werden
delete pArrHilfskapo;
// Neuen Originalarray ausgeben
for (i = 0; i<KatLen; ++i)
{
cout << »Nummer: « << pArrkapo[i].nr << endl;
// cout << »Titel: « << pArrkapo[i].title << endl;
// cout << »Beschreibung: « << pArrkapo[i].desc << endl;
}
} // Ende else
bGefunden = 0;
} // Ende while(1)
} // Ende main
|