TEdit-Array erstellen (war: Array)



  • Hallo

    Geht nicht!

    Ist keine ausreichende Fehlerbeschreibung!

    Hast du denn in dem Array auch echte Instanzen hinterlegt?

    Ein Problem wird auch in dieser Zeile sein

    Edit[i+10]->Text=a[i];
    

    wieso +10? Sollte eher so sein :

    Edit[i]->Text=a[i];
    

    bis bald
    akari



  • Ich wage mal zu bezweifeln, dass das das einzige Problem ist...



  • Hallo

    @Dasd : stimmt, die Arraygrenzen werden auch noch überschritten
    [cpp]const int x=7;
    int a[x];
    ...
    a[7]=e[3]|(~e[7]&255); [/cpp]

    bis bald
    akari



  • Das und die Edits kommen irgendwo aus dem nichts. Ich wage zu bezweifeln, dass das ohne Zugriffsverletzungen abläuft. Auch wenn sämtliche Arraygrenzen eingehalten werden...



  • Moment
    ich bin neu im Geschäft. Ich hab mir mit dem C++ Builder ein Form erstellt
    mit 8 Eingabefeldern (Edit-Felder) und 8 Ausgabefeldern (Edit-Felder).
    Ich möchte nacheinander Edit0 bis Edit7 in die Variablen E0 bis E7 einlesen.
    Danach werden die Berechnungen durchgeführt.
    Ausgabe erfolgt nacheinander A1 bis A7 in Edit8 bis Edit15.

    Als Standard Pro einzeln einlesen und einzeln ausgeben funzt.
    E0=StrToInt(Edit0->Text) bis E7
    Edit8->Text=A0 bis A7
    Nun hab ich mir gedacht ich könnte das Prog zeilenmäßig etwas verkleinern.

    Also hab ich Arrys ausprobiert.

    int i;
    int e[8];
    int a[8];
    TEdit *Edit[16];

    for (i=0;i<8;i++)
    e[i]=StrToInt(Edit[i]->Text);

    a[0]=e[0]&e[4];
    a[1]=e[1]&e[5];
    a[2]=e[2]&e[6];
    a[3]=e[3]&e[7];

    a[4]=e[0]|(~e[4]&255);
    a[5]=e[1]|(~e[5]&255);
    a[6]=e[2]|(~e[6]&255);
    a[7]=e[3]|(~e[7]&255);

    for (i=0;i<8;i++)
    Edit[i+8]->Text=a[i];



  • Das Problem bleibt aber bestehen. Du deklarierst ein Array mit Zeigern vom Typ TEdit. Die zeigen aber irgendwo in den Speicher, wo wahrscheinlich alles mögliche steht, nur kein Editfeld.

    Also musst du irgendwie deinem Array mitteilen, welche Edits genau es nehmen soll. Suche mal nach FindComponent hier im Forum bzw. in deiner BCB-Hilfe. Dann bräuchtest du wahrscheinlich auch noch Casts oder dynamic_cast.

    Am besten deklarierst du das Array global als Member deiner Formklasse und füllst es im Konstruktor mit den entsprechenden Edits. Dann kannst du jederzeit darüber verfügen.

    Oder aber du erzeugst die Edits zur Laufzeit und speicherst sie - ebenfalls global - in deinem Array. Auch dazu finden sich Anleitungen in der FAQ dieses Forums bzw. in der Hilfe.



  • Wie geht das?

    Am besten deklarierst du das Array global als Member deiner Formklasse und füllst es im Konstruktor mit den entsprechenden Edits. Dann kannst du jederzeit darüber verfügen.



  • Ähmm... woran scheitert es jetzt? Weißt du nicht, was ein Formular ist? Oder eine Member-Variable? Oder was ein Konstruktor ist? Verstehe die Frage nicht ganz. Vllt. solltest du dich nochmal mit den Grundlagen der OOP beschäftigen.

    Ansonsten heißen die Zauberworte FindComponent und dynamic_cast. Aber das hatte ich ja bereits geschrieben...



  • Member-Variable
    Konstruktor

    Was ist das? Hab bis jetzt noch nie objektorientiert programmiert?
    Nur mit Hilfe C-Builder, also sprich nur mit vorgegebenen Sachen.



  • Hallo

    dann solltest du dich mal schlau machen, z.B. hier :
    http://www.cpp-tutor.de/cpp/le09/le09_01.htm

    bis bald
    akari


Anmelden zum Antworten