Operationen auf zellen
-
Hallo;
Ich habe mir n TMemo und n TStringGrid gebaut, TMemo ist unsichbar und bekommt daten die ich im TStringGrid speichere :
void TConnectionSR232App::ReturnMethod(AnsiString NewData)
{
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(" "));// 250
AnsiString Lignes = Receive_Memo->Lines->Strings[8];
StringGrid1->Cells[8][1] = Lignes.SubString(1,Lignes.Pos(" "));//300
StringGrid1->Cells[1][row] = DateToStr(Now())+"/"+TimeToStr(Now()); // Place dans la cellule 1 la date et l'heure
StringGrid1->RowCount = row+1 ;}
Jetzt will ich inhalt von Cells[8][1] mit Cells[7][1] addieren und speichern im Cells[11][1]... das heißt 300+250 ergebnis 550 speichern....
Danke....
-
Interessant !
-
Ich glaube nicht, dass das von dir ist.
Oder warum benutzt du freiwillig(!) französische(!!) Variablennamen und Kommentare?
-
Merker² schrieb:
Ich glaube nicht, dass das von dir ist.
Oder warum benutzt du freiwillig(!) französische(!!) Variablennamen und Kommentare?Weil ich franzose bin

-
Das stimmt ja sogar!
Crossposting-Alarm!
http://www.developpez.net/forums/showthread.php?p=2447089
-
Jop PostCrossing;
Aber sie haben mich dort n weile geholfen, ich muss aba dringend das zeug zu laufen bringen...wenn sie mich helfen können wäre allerdings super...oda?
-
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!

-