Memo in Matrix Speichern



  • Hallo ich bin kein wirklich erfahrener C++ Programmierer, deswgen habe ich eine Frage an euch.
    Wie kann ich ein Memo in einer Matrix speichern, bzw. ist das überhaupt mgl.?

    Mein Versuch:

    char lab[LAENGE][LAENGE];
    for (int i = 0; i < LAENGE; i++)
    {
      for (int k = 0; k < LAENGE; k++)
      {
      lab[i][k] = Memo1->Lines[i][k];
      }
    }
    

    Soll mal ein Labyrinth werden, deshalb diue bezcihnung "lab"
    Das liefert aber den Fehler:

    [C++ Fehler] Unit1.cpp(53): E2034 Konvertierung von 'AnsiString' nach 'char' nicht möglich

    Viele Grüße



  • char ist ein Buchstabe
    char* ist eine Zeichenkette (wobei man hier lieber std::string oder (in deinem Fall wohl eher) AnsiString nutzen sollte - ist einfach schneller(als du es hinbekommen würdest ^^), sicherer, komfortabler, ...)
    bei dir scheint auch nen const char* zu reichen, da du den string ja scho iwo gespeichert hast...

    Aber evtl solltest du erst ma erklären, wie du ein Labyrinth aus buchstaben bauen möchtest...

    falls du das memo an sich schon in ner matrix speichern möchtest, müsstest du das auch ma sagen - du wiedersprichst dich hier irgendwie... ^^

    bb



  • Also, ein Memoinhalt könnte z.B so aussehen:

    ##########
    #*#~~~~~~#
    #~#~~~~~~#
    #~#~~~~~~#
    #~#####~~#
    #~#~~~~~~#
    #~~~~###~#
    #~~~~#^~~#
    #~~~~#~~~#
    ##########
    

    ~ein begehbares Feld
    #eine begrenzung
    *der Anfangspunkt
    ^das Ziel

    Jetzt möchte ich, dass man als Benutzer das Memo Feld Editieren kann... dazu muss ich es danach wieder auslesen, dazu möchte ich es in eine Matrix speichern.

    lab[][] würde dann wiefolgt aussehen

    lab[0][0] = '#';
    lab[0][1] = '#';
    lab[0][2] = '#';
    ...
    lab[1][0] = '#';
    lab[1][1] = '*';
    lab[1][2] = '#';
    lab[1][3] = '~';
    ...



  • hmm... ok

    Dann warte am besten mal, bis dich nen Mod ins VCL-Forum verschiebt - Lines[i][k] sieht in meinen Augen eigtl so aus, als obs nen char zurückgeben würde...

    bb



  • Memo->Lines[i][k] scheint vom Typ string zu sein. lab[i][k] ist aber vom Typ char. Versuch mal lab als string zu deklarieren (oder Memo->Lines als char).



  • ich hab zwar kein bcb hier, aber denke zu meinen, dass memo ein array of string umfasst...
    jede line wird also als genau ein string gesehen, also ist das hier gültiger quellcode: AnsiString line = Memo1->Lines[i]; und char character = line[k] oder seh ich das falsch?!

    bb



  • Ich habe es jetzt hinbekommen...

    TStringList *labyr = new TStringList();
    labyr->LoadFromFile("C://lab.txt");
    for (int i = 0; i < LAENGE; i++)
    {
      for (int k = 0; k < LAENGE; k++)
      {
        lab[i][k] = labyr->Strings[i][k+1];
      }
    }
    delete labyr;
    

    'k+1', daher, weil es mit eins und nicht mit null beginnt..

    Danke für dir Hilfe, viele Grüße.


Anmelden zum Antworten