Zifferncode prüfen



  • ich hab mir eine Anwendung geschrieben die mir aus der DigitalProductId (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion)
    einen zahlencode errechnet. diesen zahlencode vergleiche ich dann mit einem weiteren zahlencode der durch die eingabe von 5 Editfeldern errechnet wird.
    Die eingabe in den Editfeldern ist Hex. Da ich nicht selbst solange rumtippen bzw. rechnen will
    bis ich einen zahlencode gefunden hab der zu dem zahlencode aus der DigitalProductId passt. Lass ich mir
    per random in die 5 Editfelder Hexcode schreiben, lesen den aus & errechne daraus den zahlencode und vergleiche.

    ist der zahlencode gleich dem zahlencode aus der DigitalProductId, speicher ich den Hexcode aus den Editfeldern in einer Liste mit 5 Spalten

    Liste sieht wie folgt aus.

    id |Edit1 |Edit2 |Edit3 |Edit4 |Edit5 |
    ------------------------------------------------|
    0 |Hexcode|Hexcode|Hexcode|Hexcode|Hexcode|
    ------------------------------------------------|
    1 |Hexcode|Hexcode|Hexcode|Hexcode|Hexcode|
    ------------------------------------------------|
    2 |Hexcode|Hexcode|Hexcode|Hexcode|Hexcode|
    ------------------------------------------------|

    bis hierhin funzt das soweit alles problemlos
    mein problem ist nun das mir nichts einfällt wie ich geschickt alle Hexcodes aus der liste mit dem
    gerade erstellten Hexcode aus den Editfeldern vergleichen kann, wenn alle gleich sind wird der
    Hexcode aus den Editfeldern verworfen ist auch nur ein Editfeld anderst als sein gegenstück in der Liste
    will ich es in der liste haben.

    bislang mach ich so, das wenn 2 codes gleich sind eine variable auf true gesetzt wird ist das nächste feld nichtmehr gleich dann wird die variable wieder False
    das problem dabei ist nur das wenn alle 4 vorderen Felder nichtgleich sind (also False) und nur das letzte feld gleich seinem gegenstück (Editfeld) ist, wird True zurückgegeben und der Hexcode
    verworfen obwohl 4 Felder davon nicht identisch sind.
    weis da jemand ne lösung für das probelem??

    BOOL C...Dlg::IsCodeInList()
    {
    	int nCount = ((CListCtrl*)GetDlgItem(IDC_LIST))->GetItemCount();
    
    	BOOL bTorF = FALSE;
    	for(int nloop=0;nloop<=nCount;nloop++)//Durchlaufe die Zeilen der Liste
    	{
    		int nSize = sizeof(EDITFELDLIST);
    
    		for(int nx=0;nx<=nSize;nx++)//Durchlaufe die Spalten der Liste
    		{
    			CString sEditHex,sListHex;
    			GetDlgItemText(EDITFELDLIST[nloop],sEditHex);//Hol den Hexcode aus dem Editfeld
    
    			sListHex = ((CListCtrl*)GetDlgItem(IDC_LIST))->GetItemText(nloop,nx);//Hol Hexcode aus der Liste
    			if(sListHex == sEditHex)//Vergleiche beide codes miteinander
    				bTorF = !bTorF;
    		}
    	}
    	return bTorF;
    }
    

Anmelden zum Antworten