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.