Operationen auf zellen
-
Hallo
Zunächst einmal gehört das ins Builder-Forum.
Wenn du schon genau weist was zu tun ist warum setzt du das nicht um?
Zuerstmal das Problem aufteilen :
- Die Werte von 2 Zellen von AnsiString in lokale int umwandeln
- addieren
- Die Summe von Int in AnsiString umwandeln und in die Zielzelle schreiben.Zu allen einzelproblemen findest du etwas in der Builder-Hilfe, zum Beispiel bei der AnsiString-Methode ToInt.
bis bald
akari
-
und nimm statt dem unsichtbaren Memo lieber eine TStringList.
-
akari schrieb:
Hallo
Zunächst einmal gehört das ins Builder-Forum.
Okay da hast du recht gehabt, tut mir leid!Wenn du schon genau weist was zu tun ist warum setzt du das nicht um?
Zuerstmal das Problem aufteilen :
- Die Werte von 2 Zellen von AnsiString in lokale int umwandeln
- addieren
- Die Summe von Int in AnsiString umwandeln und in die Zielzelle schreiben.akari
Das habe ich eben gemacht --->
int Wert;
int Wert2;
int Erg;
int Ligne = Receive_Memo->Lines->Count;
Receive_Memo->Text = Receive_Memo->Text+NewData;
for (int i = 0 ; i < Ligne ; i++)
{
AnsiString Ligne = Receive_Memo->Lines->Strings[7];
StringGrid1->Cells[7][1] = Ligne.SubString(1,Ligne.Pos(" "));
AnsiString Lignes = Receive_Memo->Lines->Strings[8];
StringGrid1->Cells[8][1] = Lignes.SubString(1,Lignes.Pos(" "));
StringGrid1->Cells[1][row] = DateToStr(Now())+"/"+TimeToStr(Now()); // Place dans la cellule 1 la date et l'heure
StringGrid1->RowCount = row+1 ;
Wert = StrToInt(StringGrid1->Cells[7][1]);
Wert2 = StrToInt(StringGrid1->Cells[8][1]);
Erg = Wert + Wert2;
StringGrid1->Cells[10][1]= IntToStr(Erg);Aba ich habe n fehler : Exception der Klasse EConverError mit der Meldung "" ist kein gültiger Intergerwert...
So siehst aus in meiner TMemo:
DR/4000U SER.NR.: 0310U0005217 2.40 #1
30-AUG-07 16:41:24 MULTI-WELLENLANGE #2
Gruppe 0022 PRobe 0001 #3
0.000 ABS #4
A=K1A1+K2A2 #5
#6
250.0 mn 0.001 ABS K1: 1.0000 #7
300.0 mn -0.001 ABS K2: 1.0000 #8P.S: ich bin net so weit bei programmierung ich studiere noch...

-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum VCL/CLX (Borland C++ Builder) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hallo
Die Fehlermeldung ist doch eindeutig. In einer deiner Zellen ist ein leerer String, deshalb kann es nicht in einen int umgewwandelt werden.
Benutzt soetwas um Fehler abzufangen :Wert = StrToIntDef(StringGrid1->Cells[7][1], 0);bis bald
akari
-
Wenn in deiner Zelle nichts drinsteht, was sich in eine Zahl konvertieren lässt kommt halt eine Exception.
Du kannst dies Exception abfangen (try/catch) oder StrToIntDef nehmen.
[edit]viel zu spät[edit]
-
akari schrieb:
Hallo
Die Fehlermeldung ist doch eindeutig. In einer deiner Zellen ist ein leerer String, deshalb kann es nicht in einen int umgewwandelt werden.
Benutzt soetwas um Fehler abzufangen :Wert = StrToIntDef(StringGrid1->Cells[7][1], 0);bis bald
akariJa danke! Ich bekomme in meiner Ergebniskätschen n 0....warum? obwohl dass ich genau in cells[7][1] und Cells[8][1] 250 bzw 300 habe...

-
akari schrieb:
Hallo
Die Fehlermeldung ist doch eindeutig. In einer deiner Zellen ist ein leerer String, deshalb kann es nicht in einen int umgewwandelt werden.
Welche zellen meinst du? ich kompiliere alles fehlerfrei aba in Zellen WERT 1 habe ich genau 250 und WERT 2 300 aba in ERG nur n 0;
-
Hallo
Benutzt den Debugger und schau nach was die Variablen wirklich für Werte haben. Ich bin mir sicher das in den Zellen die wirklich ausgelesen werden eben nicht drinne steht, das deutet ja auch die Fehlermeldung aus deinem vorletzteb Post hin.
bis bald
akari
-
Okay danke AKARI ich habe noch rumgeguckt und um ehrlich zu sein nichts gesehen...wie gesagt ich bin net der expert...ich habe n pic gemacht wo du die tabelle ansehen kann...nach kompilierung natürlich:
---> hier : http://img70.imageshack.us/img70/5463/capture01nt5.jpg
-
Irgendwas kann da nicht stimmen. Die Spalten 7 und 8 gibt es in deinem Bild doch gar nicht.
-
Braunstein schrieb:
Irgendwas kann da nicht stimmen. Die Spalten 7 und 8 gibt es in deinem Bild doch gar nicht.
Doch! hier ist dier erste spalten 1 bis 6:
--->http://img264.imageshack.us/img264/1356/capture01ed0.jpg
-
Nochmal der Hinweis. Geh mit dem Debugger durch und schau nach was in den Zellen genau drin steht.
-
Braunstein schrieb:
Nochmal der Hinweis. Geh mit dem Debugger durch und schau nach was in den Zellen genau drin steht.
Ich benutze C++Borland 2007 kannst du mir sagen wie es geht! Ich habe nie Debugger benutzt!

-
-
Hi Braunstein;
Ich habe den tuto gelesen; ich habe mit strg+F5( meldung : Prozess nicht verfügbar) und strg+F7 auch keine ergebnisse...
Aber wie ich gemacht habe, um die werten auf die linien zu lesen, ist doch richtig oder? und fehler ist nur beim umwandlung! oder ist das ganze falsch?
-
Die Fehlermeldung, die du uns mal gepostest hast deutet darauf hin, dass die Umwandlung nicht möglich ist. Also steht in der entsprechenden Zelle nichts, was sich in eine Zahl umwandeln lässt.
-
Braunstein schrieb:
Die Fehlermeldung, die du uns mal gepostest hast deutet darauf hin, dass die Umwandlung nicht möglich ist. Also steht in der entsprechenden Zelle nichts, was sich in eine Zahl umwandeln lässt.
Oh ok gut! jetzt weiss ich...Also was können Sie mir vorschlagen um aus linien 7 und 8 :
250.0 mn 0.001 ABS K1: 1.0000 #ligne 7
300.0 mn -0.001 ABS K2: 1.0000 #ligne 8die floats 250.0 und 300.0 im cells zu legen und arithmetische operationen durchführen mit hilfe diese beide.
-
Hallo
Mit den AnsiString-Methoden Pos und SubString nach dem ersten Leerzeichen suchen und den Text entsprechend zerlegen.
bis bald
akari
-
akari schrieb:
Hallo
Mit den AnsiString-Methoden Pos und SubString nach dem ersten Leerzeichen suchen und den Text entsprechend zerlegen.
bis bald
akariHabe ich doch gemacht oder? schaue mal hier:
void TConnectionSR232App::ReturnMethod(AnsiString NewData)
{
int Ligne = Receive_Memo->Lines->Count;
Receive_Memo->Text = Receive_Memo->Text+NewData;StringGrid1->Cells[1][row] = DateToStr(Now())+"/"+TimeToStr(Now());
for (int i = 0 ; i < Ligne ; i++)
{AnsiString Ligne = Receive_Memo->Lines->Strings[7];
StringGrid1->Cells[7][1] = Ligne.SubString(1,Ligne.Pos(" "));
Ligne = Receive_Memo->Lines->Strings[8];
StringGrid1->Cells[8][1] = Ligne.SubString(1,Ligne.Pos(" "));
StringGrid1->RowCount = row+1 ;}
}