Προς το περιεχόμενο

wizard & S/N & C++


emilios_x

Προτεινόμενες αναρτήσεις

Έχω ένα πρόβλημα και δε μπορώ να βρω λύση,θα ήθελα την βοήθεια σας.

 

Λοιπόν:

Προσπαθώ να κάνω ένα απλό wizard στην C,όπου θα ζητά κάποια στιγμή ένα S/N έτσι λοιπόν δημιουργώ για αρχή δυο φορμες

 

Στην Form1 έχω διάφορα κουμπάκια(δεν παίζουν ρόλο) και στο Event- OnShow της φόρμας

γράφω αυτό:

>void __fastcall TForm1::FormShow(TObject *Sender)
{
       Form2->ShowModal();        
}

 

Στην Form2 τώρα βάζω 1 editbox και 2 BitBtn όπου στο ένα BitBtn το Kind του είναι bkOK και εκεί γράφω τον παρακάτω κώδικα:

 

>int result;
       bool passok=false;

       while(!passok)
       {
               result=Form2->ShowModal();
               if(result==ID_OK)
               {
                       if(Form2->Edit1->Text!="12")
                       {
                               ShowMessage("Lathos");
                       }
                       else
                       {
                               passok==true;
                       }
                }
                else if(result==ID_CANCEL)
                {
                       break;
                }
        }
        if(!passok)
        {
               Close();
        }

 

 

Κάπου κάνω λάθος αλλά δε το βρίσκω,ο Κώδικας είναι σωστός,αλλά κάτι μου ξεφευγει ίσως στα Properties του editbox ή του BitBtn ή κάτι άλλο.

Όταν τρέχω το Project μου εμφανίζει κανονικά πρώτα την Form2 αλλά όταν βαζω το pass είναι σωστό είτε λάθος μου πετάει σφάλμα :rolleyes:

 

Κάθε βοήθεια ευπρόσδεκτη :-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Η ματαβλητήση σου passok έχει πολύ γέλιο!!

 

Η C δεν έχει build-in τύπο boolean, αν θες να χρησιμοποιήσεις κάνε κάτι σαν το παρακάτω, μάλλον εννοείς C++, πάντως για C:

>typedef bool int
#define true 1
#define false 0

 

 

>void __fastcall TForm1::FormShow(TObject *Sender)
{
       Form2->ShowModal();        
}

 

>int result;
       bool passok=false;

       while(!passok)
       {
               result=Form2->ShowModal();
               if(result==ID_OK)
               {
                       if(Form2->Edit1->Text!="12")
                       {
                               ShowMessage("Lathos");
                       }
                       else
                       {
                               [b]passok=true;[/b]
                       }
                }
                else if(result==ID_CANCEL)
                {
                       break;
                }
        }
        if(!passok)
        {
               Close();
        }

 

Επίσης βάλε και κανένα σχόλιο στον κώδικα σου. Πιο συχνά διαβάζονται οι κώδικες από ανθρώπους παρά από μηχανές, άρα τα σχόλια είναι χρήσιμα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ευχαριστώ myle

Ναι μιλάω για C++ το γράφω και στο τίτλο εκ παραδρομής στην συνέχεια λέω C

Τελικά τροποποίησα λίγο τον κώδικα και τον έκανα πιο εύκολο αλλά όχι έτσι πως θα ήθελα το τελικό αποτέλεσμα.

Το passok το είχα βάλει στην αρχή σαν pass_ok αλλά μου άρεσε η ιδέα και το γύρισα σε passok :P

Είχα γράψει στα γρήγορα τον κώδικα και δεν έβαλα σχόλια στην αρχή και το πόσταρα έτσι :D

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

>
Form2->Edit1->Text!="12" 

???

 

Ο φίλος μας γράφει σε C/C++ Builder ο οποίος χάριν της οπτικής βιβλιοθήκης VCL (η ίδια που χρησιμοποιεί και η Delphi) επιτρέπει πολλά κόλπα, έτσι η παραπάνω εντολή απλά λέει πως αν το Text του Edit1 component της Form2 δεν είναι 12 κάνε αυτό..

 

Το Text κάθε TEdit class (edit control για το Windows API) σε C/C++ Builder VCL είναι ένα VCL AnsiString class (θυμίζει το ανάλογο C++ STL string) το οποίο ενσωματώνει τον τελεστή != (και άλλους βέβαια, πχ. ==) για απλές / γρήγορες συγκρίσεις strings (σε C θα λέγαμε strcmp) ..

 

@emilios_x:

Αντί των Windows API ID_OK ID_CANCEL μπορείς να χρησιμοποιήσεις και τα VCL mrOk και mrCancel για παράδειγμα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...