Wertetabelle erstellen



  • was genau hast du versucht um diese Fehlermeldung zu bekommen?

    der Zugriff auf einzelne Zellen vom TStringGrid geht über die Eigenschaft Cells

    die Hilfe vom BCB ist mit vielen Beispielen versehen, deshalb solltest du versuchen diese umbedingt zu nutzen, da von uns meist Hinweise darauf erhalten wirst



  • Gibt es denn eine Möglichkeit, die ganzen Werte, die ich mit der for-Struktur erhalten habe, in einer Variabel zu speichern oder kann ich sie irgendwie gleich in die Tabelle bekommen?? Gibt es dazu eine Methode??

    Vielen Dank
    lg, freakC++



  • Also ich habe folgendes gelesen:

    Rows[0]->Add("0"); 
    Cols[1]->Add("1"); 
    Cols[2]->Add("2"); 
    Cols[3]->Add("3");
    

    Ich habe mir gedacht, dass Rows und Cols, wie sie hier stehen, die Beschriftungen der Tabelle sind (aber nicht die Werte). Ich weiß nun nicht, wohin mit dem Quelltext.

    Vielleicht installiere ich Borland noch auf nem XP Rechner, damit ich die Hilfe nutzen kann!!

    Vielen Dank,
    freakC++



  • ähm, Rows und Cols gehört zu TStringGrid und ist nicht einzeln zu haben
    also langsam solltest du mal verstanden haben wie die VCL funktioniert

    StringGrid1->Rows[0]->Add("1");
    //besser
    StringGrid1->Cells[0][0] = "ich bin die allererste Zelle";
    


  • Linnea schrieb:

    also langsam solltest du mal verstanden haben wie die VCL funktioniert

    Ja wie denn, wenn er sich beharrlich weigert, sich die notwendigen C++-Kenntnisse anzueignen?!?



  • Hey, ich weigere mich nicht die Kentnisse zu lernen. Im Gegenteil: Ich möchte es sogar nur zu gern. Doch solltest ihr doch am aller meisten wissen, dass das nicht in einer Woche un nen paar Tagen zu schaffen ist (außer vielleicht, wenn man nichts für Schule etc. tun muss)

    Trotzdem Danke für eure Hilfe
    lg, freaC++



  • Nö, ich sehe nichts von Lernwillen. Wenn Du wirklich würdest lernen wollen, würdest Du das Gefrickel sein lassen und statt dessen ein paar Konsolentutorien durcharbeiten. Aber das ist ja langweilig und macht keinen Spass...



  • Ich finde, dass man so ein Urteil nicht fällen kann, wenn man sich nur durch ein paar Postings kennt. Aber mal ehrlich, dafür sind doch Foren da, denn bei mir ist es so, dass ich besser lerne, wenn ich meine Fragen (auch wenn sie so blöd sind, dass es ne Lachnummer wird) an Leute wie euch stellen, die mir weiter helfen. Dadurch lerne ich auch!!

    Bitte habt Verständnis!
    Ich hoffe, dass ich in Bälde die Grundlagen beherrsche und würde mich freuen, wenn ihr mir trotzdem noch helfen würde.

    Vielen Dank
    lg, freakC++



  • Nein, das sehe ich eben nicht so. Das soll aber keineswegs abwertend gemeint sein. Ohne die entsprechenden C++-Kenntnisse verstehst Du unsere Antworten einfach nicht.
    Das hier ist ein VCL-spezifisches Forum. Die reinen C++-Fragen gehören ins C++-Forum. Hier ist einfach der falsche Ort um Grundlagen zu vermitteln.
    Also mach Dir doch die Mühe und lerne die Grundlagen, bevor Du Dich überhaupt an der GUI-Programmierung mit der VCL versuchst.



  • Ok, das verstehe ich. Dann werde ich solche Fragen demnächst im C++ Forum fragen. Ich dachte, ich bin hier besser aufgehoben, da ich halt mitm Builder programmiere!!

    Vielen Dank
    lg, freakC++



  • freakC++ schrieb:

    Dann werde ich solche Fragen demnächst im C++ Forum fragen.

    Niemand hat gesagt, dass Du das machen sollst. Funktioniert auch nicht, weil die Dich dort an das BCB-Forum verweisen, sobald Du mit der VCL kommst...

    Du kannst die VCL nicht ohne entsprechende Grundlagen verwenden und Du kannst im C++-Forum nicht erwarten, dass man dort die Besonderheiten der VCL kennt.

    Also lerne die Grundlagen an Konsolenprojekten, so wie das jeder von uns gemacht hat.



  • So, da bin ich schon wieder,
    ich habe mir jetzt versucht noch was anzueignen mittels Tutorials, damit ich meine Wertetabelle erstellt bekomme. Außerdem habe ich mit goolge geschaut und habe ich einem anderen Forum ein ähnliches Problem gesehen.

    Ich habe mir folgendes Quelltext abgeleitet:

    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
    
     CGM = Vmax * pow(Rmax, 0.5);
      for (double i=6; i<12; i++)
      cout << CGM / pow(i, 0.5) << "\n";
    }
    

    Im Tutorial steht, dass mit cout eine normale Ausgabe gemacht wird. Also hab ichs so ausprobiert, wie es hier steht, doch ich bekomme nur ein leeres Formular. Was stimmt daran noch nicht? Zuvor habe ich versucht mit einem Variablenfeld zu arbeiten, damit ich die gewünschten Werte zwischen 6 und 11 herausbekomme, doch hatte ich leider damit auch keinen Erfolg.

    lg, freakC++



  • Hallo

    freakC++ schrieb:

    Im Tutorial steht, dass mit cout eine normale Ausgabe gemacht wird. Also hab ichs so ausprobiert, wie es hier steht, doch ich bekomme nur ein leeres Formular. Was stimmt daran noch nicht?

    Der Code ist korrekt, aber cout ist die Konsolenausgabe. Da du ein GUI-Programm hast siehst du natürlich nichts davon, du must die Ausgabe schon in einer VCL-Komponente machen.

    Zuvor habe ich versucht mit einem Variablenfeld zu arbeiten, damit ich die gewünschten Werte zwischen 6 und 11 herausbekomme, doch hatte ich leider damit auch keinen Erfolg.

    Dann hast du etwas falsch gemacht. Was genau kann ich nicht sagen, da du ja weder entsprechenden Code noch Fehlermeldung gepostest hast.

    bis bald
    akari



  • Hallo,
    vielen Dank. Wieder was gelernt. Kann man denn in VCL nur eine Ausgabe mittels Labels, MessageBoxs etc. machen, da wie du schon sagtest ich ein leeres Formular habe. Hier ist der Quelltext mit den Variablenfeldern:

    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
     CGM = Vmax * pow(Rmax, 0.5);
     float R, V[7];
     for (int i = 6; i<12; i++)
      {
       V[i] = CGM / pow(i, 0.5);
       Label1->Caption = V[i];
      }
    }
    

    Es kommt folgende Fehlermeldung:
    Zugrifffsverletzung bei Adresse 00401BD9 in Modul 'Project2.exe'. Lesen von Adresse 0D90C7B4. Wenn ich jedoch auf "OK" klicke, startet das Programm und es wird auf dem Label nur der Wert für i=6, also dem niedrigsten Wert angezeigt. In dem Tutorial stand was, dass ein Label mehrere Werte, also hier die Wertetabelle nicht anzeigen kann, sondern nur immer einen Wert. Ist das der FEhler und benötige ich einfach ein anderes Objekt??

    akari schrieb:

    Hallo

    Der Code ist korrekt, aber cout ist die Konsolenausgabe. Da du ein GUI-Programm hast siehst du natürlich nichts davon, du must die Ausgabe schon in einer VCL-Komponente machen.

    Wie kann ich dies Ausgabe in der VCL-Komponente machen. Dazu habe ich nämlich nichts gefunden!

    Vielen Dankf für eure Hilfe,
    freakC++

    [



  • Hallo

    freakC++ schrieb:

    Es kommt folgende Fehlermeldung:
    Zugrifffsverletzung bei Adresse 00401BD9 in Modul 'Project2.exe'. Lesen von Adresse 0D90C7B4. Wenn ich jedoch auf "OK" klicke, startet das Programm

    Kein Wunder. Du hast ein Array mit 7 Elementen, also Indexe von 0 bis 6. Deine Schleife geht aber über die Indexe 6 bis 11.
    Übrigens solltest du OnCreate und OnDestroy nicht benutzten (Begründung siehe SuFu). Verschieb den Code entweder in den Konstruktor des Forms oder in einen anderen Event.

    und es wird auf dem Label nur der Wert für i=6, also dem niedrigsten Wert angezeigt. In dem Tutorial stand was, dass ein Label mehrere Werte, also hier die Wertetabelle nicht anzeigen kann, sondern nur immer einen Wert. Ist das der FEhler und benötige ich einfach ein anderes Objekt??

    Ein Label zeigt immer genau einen String an. Du kannst natürlich mehrere Werte in einen String zusammenfassen

    Label1->Caption = Label1->Caption + "; " + FloatToStr(V[i]);
    

    Eventuell ist aber ein TStringGrid hier besser geeignet, da kannst du mehrere Zeilen und Spalten einrichten.

    Wie kann ich dies Ausgabe in der VCL-Komponente machen. Dazu habe ich nämlich nichts gefunden!

    Die cout-Ausgabe kannst du mit ein paar WinAPI-Tricks auch in eine VCL-Komponente umleiten (z.B. TMemo). Gibt sicher schon einen Thread dazu hier im Forum, schau mal in die FAQ und SuFu.
    Allerdings sollte man bei GUI-Programmen auch entsprechende GUI-Komponenten nehmen und mit Daten füllen (wie oben bei dem TLabel). Wenn du Konsolenausgabe haben willst dann mach doch ein Konsolenprojekt auf.

    bis bald
    akari



  • Hallo,
    @akari: Herzlichen Dank für die Hilfe! Es klappt nun was ich machen wollte. Ich denke, dass ich deinen Rat befolgen werde un mit TStrinGrid arbeiten werde, da ich jetzt keine Formation habe! Zunächst muss ich aber ein Tutorial suche, wo diese Klasse etwas genauer beschrieben wird, da ich noch nicht damit gearbeitet habe (also wie ich den einzelnen Zellen die Werte zuweise).

    Liebe Grüße
    freakC++


Anmelden zum Antworten