struct und Array
-
Hallo zusammen,
ich programmiere nur selten in C++, aber jetzt habe ich nachfolgendes Problem welches ich mit VSTO 2008 lösen möchte.
Ich bekomme über ein anderes Programm Meldungen für die Inventur, die in einem mobilen Erfassungsgerät erfasst werden. Da die gleichen Meldungen öfters kommen können muss ich die in ein Array abspeichern, die noch nicht verarbeitet, d. h. in einer Datenbank abgespeichert sind.
Das ist main Array:
const int ArryMax=1000; //------------------------------------------------------------------ // KR 21.09.2010 // Array [InventurArray] deklarieren //------------------------------------------------------------------ struct InventurArray { unsigned short uInputID; // Eingabe-ID wird bei allen Meldungen übergeben unsigned long uConfirmationID; // Bestätigungs-ID wird bei allen Meldungen übergeben char szCurrentStorageLocation[64]; //CMD_ID_SB_NOT_INVENTORY_1: char szArticleNumber[64]; //CMD_ID_SB_NOT_INVENTORY_2: char szArticleRevision[32]; //CMD_ID_SB_NOT_INVENTORY_2: long nAmount; //CMD_ID_SB_NOT_INVENTORY_3: char szCartonNumber[64]; //CMD_ID_SB_NOT_INVENTORY_3: SB_DATE Date; //CMD_ID_SB_NOT_INVENTORY_4: SB_TIME Time; //CMD_ID_SB_NOT_INVENTORY_4: unsigned long uIDCard; //CMD_ID_SB_NOT_INVENTORY_4: }InvArry;
Hier der weitere Code zum initialisieren:
//------------------------------------------------------------------ // KR 21.09.2010 // Array [InventurArray] initialisieren //------------------------------------------------------------------ InventurArray Inventur[ArryMax]; for (int i=0; i>ArrayMax; i++) { InvArry.uInputID[i] = 0; Inventur.uConfirmationID[i] = 0; Inventur.szCurrentStorageLocation[0][i] = '\0'; Inventur.szArticleNumber[0][i] = '\0'; Inventur.szArticleRevision[0][i] = '\0'; Inventur.nAmount[]=0; Inventur.szCartonNumber[0][i] = '\0'; Inventur.SB_DATE Date; Inventur.SB_TIME Time; Inventur.uIDCard[i] = 0; }
Ich möchte das Array erst initialisieren, dann soll es durchsucht werden, ob eine Meldung mit dem Inhalt der Felder uConfirmationsID und uInputID schon vorhanden ist. Wenn nein hinzufügen wenn ja nix machen.
Das Array soll nach den Feldern uInputID und uConfirmationsID aufsteigend sortiert werden.
An einem bestimmten Punkt wird das Array durchlaufen und die Elemente mit einer vorgegebenen InputID verarbeitet.Kann mir da mal schnell auf die Sprünge helfen?
Danke euch jetzt schon für die Tipps und evtl. Code.
Gruß Knut
-
Hallo Knut,
grundsätzlich gehört die Initalisierung in die Initialisierungsliste der Klasse(struct).
struct InventurItem { InventurItem() //Konstruktor : uInputID(0) //Anfang Initialisierungsliste , uConfirmationID(0) , ... { } unsigned short uInputID; unsigned long uConfirmationID; //... };
Dann solltest Du statt der C-Strings die C++-Strings
std::string
(ANSI)/std::wstring
(UNICODE) bzw. die MFC-StringsCString
benutzen. Das macht das Leben um einiges leichter und sicherer.Als nächstes wäre es ratsam sich die C++-Container (STL-Container) oder die MFC-Container anzusehen. Die machen das Leben auch wieder wesentlich leichter und sicherer.
Schau mal hier: http://www.c-plusplus.net/forum/viewtopic-var-t-is-143816.html
...und hier: http://www.cplusplus.com/reference/stl/
-
Hallo Roger,
danke für deine Antwort.
Da muss ich mich wohl einlesen und durchbeissen
Danke nochmals!