char in StringGrid ausgeben



  • Hallo,

    ich habe zahlreiche chars, die ich gerne in eine Tabellenform (vorzugsweise StringGrid) ausgeben möchte. Allerdings akzeptiert dieses nur AnsiStrings. Kann man die chars vorher umwandeln oder gibt es schon eine fertige Funktion, die das erledigt? so sieht bisher mein code aus: **Siehe ganz unten im code...
    **

    void Analyse()
    {
      //-----------------------------------------------------------------------------------
      char host[] = "          ";  // 10+1 Zeichen  zb: dewe0345
      char mac[] = "                 ";  // 17+1 Zeichen
      char domaene[] = "          ";   //10+1 Zeichen  zb: DOMSTODE
      char kernel[] = "                                       ";   //40+1 Zeichen zb: Microsoft Windows XP
      char servicepack[] = "          ";   //10+1 Zeichen  zb: 5.1
      char cpu[] = "                              ";   //30+1 Zeichen  zb: Intel Pentium III
      char mhz[] = "         ";  // 9+1 Zeichen  zb: 500Mhz
      char ram[] = "         ";  // 9+1 Zeichen  zb: 256MB
      char netzwerkkarte[] = "                                         Unbekannt";  // 50+1 Zeichen  zb: 3Com...
    
      char* text1= Form1->Memo1->Lines->Text.c_str(); //Kopiert Memostring in text1 char
    
      int stelle = 0;  // zählt die ';'
      int zeichen = 0;  // zählt den Abstand zwischen den Semikolons
      int grid_spalten = Search("#");
      int grid_zeilen = 11;
    
      for(int k=0; k <= Form1->Memo1->Lines->Text.Length(); k++)
      {
       switch (text1[k])  //Durchsuchen des Strings nach Trennzeichen
       {
       case ';': stelle++;  // Wenn ein Semikolon gefunden wurde...
    
                 switch (stelle)
                 {
                  case 1: while(zeichen!=0)  //Suche nach Hostname
                          {
                           host[k-zeichen]=text1[k-zeichen];
                           zeichen--;
                          }
                          zeichen = 0;                        
                          break;
                  case 4: while(zeichen!=0)  //Suche nach Domäne
                          {
                           domaene[10-zeichen]=text1[k-zeichen];
                           zeichen--;
                          }
                          zeichen = 0;
                          break;
                  case 5: while(zeichen!=0)  //Suche nach MAC-Adresse
                          {
                           mac[17-zeichen]=text1[k-zeichen];
                           zeichen--;
                          }
                          zeichen = 0;
                          break;
                  case 10: while(zeichen!=0 && text1[k-zeichen]!=',')  //Suche nach Betriebssystem
                          {
                           kernel[39-zeichen]=text1[k-zeichen];
                           zeichen--;
                          }
                          zeichen = 0;
                          break;
                  case 12: while(zeichen!=0 )  //Suche nach Service Pack
                          {
                           servicepack[3-zeichen]=text1[k-zeichen];
                           zeichen--;
                          }
                          zeichen = 0;
                          break;
                  case 18: while(zeichen!=0 )  //Suche nach Taktrate
                          {
                           mhz[9-zeichen]=text1[k-zeichen];
                           zeichen--;
                          }
                          zeichen = 0;
                          break;
                  case 19: while(zeichen!=0 )  //Suche nach CPU
                          {
                           cpu[30-zeichen]=text1[k-zeichen];
                           zeichen--;
                          }
                          zeichen = 0;
                          break;
                  case 20: while(zeichen!=0 )  //Suche nach Arbeitsspeicher
                          {
                           ram[9-zeichen]=text1[k-zeichen];
                           zeichen--;
                          }
                          zeichen = 0;
                          break;
                  case 22: while(zeichen!=0 )  //Suche nach Netzwerkkarte
                          {
                           netzwerkkarte[50-zeichen]=text1[k-zeichen];
                           zeichen--;
                          }
                          zeichen = 0;
                          break;
                  default: zeichen = 0;
                 }  //switch ende
                 break;
    
       case '|':  zeichen = 0;    // Wenn ein Strich gefunden wurde...
                  break;
    
      default:   zeichen++;
       }    // Switch ende
    
      }  // For ende
    
      //-----------------------------------------------------------------------------------
    
      char* p[]={"Host","Domäne","MAC-Adresse","OS","CPU","RAM","Netzwerkkarte"};
    
      Form1->StringGrid1->ColCount = grid_spalten;
      Form1->StringGrid1->RowCount = grid_zeilen;
     /* for (int i=1; i<grid_spalten; i++)
      for (int j=1; j<grid_zeilen; j++)
      {
        if (i==1) Form1->StringGrid1->Cells[i][j]= *p[j];
    
      } */
     // Ein Versuch
     Form1->StringGrid1->Cells[2][2]=mac;
    

    Hier liegt das Problem!! Die Zelle bleibt leer da mac ein char ist! 😕

    [ Dieser Beitrag wurde am 28.03.2003 um 15:55 Uhr von luketjm editiert. ]



  • Erstell doch einfach ein temp AnsiString und übergebe den char

    AnsiString tmptxt = mac;
    Form1->StringGrid1->Cells[2][2]= tmptxt;

    mfg

    VergissEs



  • OK Hab dank! 🙂



  • Vielleicht solltest du erstmal prüfen, ob in mac überhaupt was drinsteht (ausser Leerzeichen)? Das hier funktioniert jedenfalls problemlos:

    char mac[] = "12345";
      StringGrid1->Cells[1][1] = mac;
    


  • Original erstellt von Jansen:
    **```cpp
    char mac[] = "12345";

    Wobei mich alleine so ne Konstruktion schon erschaudern lässt... grauenvoll!!

    -junix



  • Hey, ich hab nicht damit angefangen! 😉

    Ich wollte nur nochmal klarstellen, dass TStringGrid::Cells eben auch vom Typ AnsiString ist und es deshalb keines temporären Strings bedarf.


Anmelden zum Antworten