Warum OOP und nicht einfach Funktionen ????



  • ja wie sollte ich denn eurer meinung nach vorgehen um richtig c++ zu lernen?
    hab mir ein bischen was zu zeigern und referenzen angekuckt, dann ein bischen oop und nun ?



  • Eben wolltest du noch OOP lernen, jetzt C++ 😕



  • sagmal ist das so eigentlich überhaupt ein richtiger anfang für eine registry klasse ?

    #include "Registry.hpp"
    class Registry
    {
    
      public:
    
         // Konstruktor TRegistry Objekt erzeugen
         Registry()
         {
            TRegistry *Reg = new TRegistry;
         }
    
         // Dekonstruktor TRegistry Objekt löschen
         ~Registry()
         {
            delete Reg;
         }
    
    ....
    


  • Wie meinst du das?
    Die new/delete-Zeilen könnten wegfallen.



  • Du willst eine Registry Klasse und benutzt dann intern eine Registry Klasse von Borland? Sehr sinnig. 🤡



  • oje, ich kann wohl garnix 😞
    ich will halt einfach ein paar funktionen schreiben um das arbeiten mit der registry zu vereinfachen ...

    kann mir mal jemand ne datenbankklasse posten oder ein link schicken damit ich mir das mal ansehen kann. ich muss halt erstmal sehen wie das profies machen, wie soll ich auch ne klasse coden wenn ich noch nie eine gesehen habe und keiner mir was erklärt ...



  • Shau Dich mal hier um:

    http://c-plusplus.net/tutorials.htm





  • Hi,

    Ich empfehle "Jetzt lerne ich C++" von Jesse Liberty".



  • sin schrieb:

    Du willst eine Registry Klasse und benutzt dann intern eine Registry Klasse von Borland? Sehr sinnig. 🤡

    Wieso nicht? schon mal was von Adaptern gehört? Oder vielleicht hat er noch 'n paar helper für die Registry o.ä. und möchte sich jetzt ne Facade dazu stricken?
    Obwohl du in diesem Fall natürlich recht haben könntest... 😉



  • ok, ich schreib mal kurz was ich eigentlich will und wie ich es bisher gemacht habe.

    ich schreibe gerade eine kleine anwendung mit einem formular wo ich jeweils die verschiedenen frames ein oder ausblende. auf jeder frame müssen aber daten aus der db geladen werden.

    z.b. kunden anlegen, ändern, löschen.

    grundlage des ganzen ist eine ms access datenbank wo ich mittels ado komponente über jet engine 4 draufzugreife:

    Da das Programm ja an jeden beliebigen ort installiert werden kann muss ich also denn pfad zur db auch dynamisch halten und das versuche ich hiermit zu erreichen:

    AnsiString DB_Pfad = ExtractFilePath(Application->ExeName) + "\Database\\Kunden.mdb";

    AnsiString JET = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DB_Pfad + ";Persist Security Info=False";

    Falls diese Verbindung fehl schlägt, sprich eine Exception auslöst versuch ich mittels catch(...) anweisung eine Verbindung über denn MS Access Treiber herzustellen:

    AnsiString Access = "Provider=MSDASQL.1;Persist Security Info=False;User ID=Admin;Extended Properties=\"DSN=Microsoft Access-Datenbank;DBQ=" + DB_Pfad + ";DefaultDir=" + Pfad + ";DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;UID=admin;\"";

    Meine ganzen Datenbankkomponenten (ADOConnection, ADOQuery und DataSource) liegen auf einen Datenmodul. Dieses Datenmodul include ich nun in jede Frame und greife dadurch auf die Datenbank zu. Da ich hinter jeden Button aber eigentlich fast immer denn selben code (bis eben auf denn sql selbst) habe möchte ich dies in einer funktion oder klasse verarbeiten.

    Beispiel: Anzeige aller Personen in einer Combo Box.

    AnsiString Name, Vorname;
    
       cboxPersonal->Clear();
       lblInfo->Visible = false;
    
       Cursor = crHourGlass;
    
       // alte SQL bereinigen
       frmDB->ADOQuery1->Close();
       frmDB->ADOQuery1->SQL->Clear();
    
       // SQL Abfrage erstellen
       frmDB->ADOQuery1->SQL->Add("SELECT Name, Vorname FROM Personal");
       frmDB->ADOQuery1->SQL->Add("WHERE Status = 'on'");
       frmDB->ADOQuery1->SQL->Add("ORDER BY Name");
    
       // SQL an die DB übertragen
       frmDB->ADOQuery1->Open();
    
       frmDB->ADOQuery1->First();
       while(!frmDB->ADOQuery1->Eof)
       {
          // Inhalte auswerten und an Combobox übergeben ...
          Name    = frmDB->ADOQuery1->FieldByName("Name")->AsString;
          Vorname = frmDB->ADOQuery1->FieldByName("Vorname")->AsString;
    
          cboxPersonal->Items->Add(Name + " - " + Vorname);
    
        frmDB->ADOQuery1->Next();
       }
    
      Cursor =  crDefault;
    

    So, nun steht z.b. das ganze Personal in mit Vor und Nachnamen in einer ComboBox. Wenn nun z.b. die zweite Person ausgewählt wurde hole ich mir einfach denn zweiten satz aus der Query

    frmDB->ADOQuery1->RecNo = cboxPersonal->ItemIndex + 1;
    

    und führe dann erneut einen sql aus der mir die kompletten daten der person holt und in textfelder läd ...

    da ich einfach die ganzen abfragen nur auf denn sql und die auswertung beschränken will und nichtmal weis ob das was ich mach optimal ist bin ich hier um euch um rat zu fragen ...

    ist das richtig oder wie sollte man sowas denn anstellen ???
    wie könnte man denn das obige verbessern ??

    bin für jeden tipp echt dankbar ..


Anmelden zum Antworten