![]() |
Cellen im Stringgrid zusammenrechnen
Tach
Stehe mal wieder vor einem Problem und zwar versuche ich gewisse Zellen im StringGrid zusammen zu addieren Folgendes wenn in Spalte Way der String OUT vorkommt (hab ich auch soweit), dann soll in der Spalte Zahlx die jweilige Zeile in der, der String OUT gefunden wurde der Wert der Spalte Zahlx zusammen gezählt werden
Delphi-Quellcode:
Hoffe ich habe es verständlich erklärt
procedure findStrings(sl:TStrings);
var i :Integer; begin for i := 1 to Pred(sl.Count)-1 do if (sl[i]) = 'OUT' then begin end end; procedure TForm1.Button6Click(Sender: TObject); Var i : integer; begin for I := 0 to StringGrid1.RowCount - 1 do if StringGrid1.Cells[i,0] = 'Way' then findStrings(StringGrid1.Cols[i]); end; |
Re: Cellen im Stringgrid zusammenrechnen
Du musst die Inhalte von String in einen Integer- oder Float-Typ Casten
(TryStringToFloat, StringToFloatDef) |
Re: Cellen im Stringgrid zusammenrechnen
Ja besser wär float da ic komma stellen habe
Aber wo mache ich das am besten daran scheitert es auch gerade |
Re: Cellen im Stringgrid zusammenrechnen
Beachte die Funktionen in der Klammer
|
Re: Cellen im Stringgrid zusammenrechnen
Welche die
Delphi-Quellcode:
die müsste dann noch erweitert werden oder??
findStrings(sl:TStrings);
|
Re: Cellen im Stringgrid zusammenrechnen
Ja
|
Re: Cellen im Stringgrid zusammenrechnen
ok
muss ich dann noch eine zweite schleife mit einbinden
Delphi-Quellcode:
und die werte in der funktion weiter verarbeitenprocedure TForm1.Button6Click(Sender: TObject); Var i,x : integer; begin for I := 0 to StringGrid1.RowCount - 1 do if StringGrid1.Cells[i,0] = 'Way' then if StringGrid1.Cells[x,0] = 'Switch' then findStrings(StringGrid1.Cols[i],StringGrid1.Cols[x]); end; |
Re: Cellen im Stringgrid zusammenrechnen
So jetzt bin ich schonmal weiter und hab die einträge aus der spalte in meiner Stringlist
jetzt hab ich nur zwei Proble 1 Es wird nicht nur der wert der Zeile ind OUT steht übergeben sondern alle 2 Wie Rechne ich dann alles zusammen So hab ich es jetzt
Delphi-Quellcode:
procedure findStrings(sl:TStrings;s:TStrings);
var i :Integer; ergebnis :Tstrings; begin ergebnis:= TStringList.Create; try for i := 1 to Pred(sl.Count)-1 do if (sl[i]) = 'OUT' then begin ergebnis.AddStrings(s); end; ergebnis.saveToFile('C:\test.txt'); finally ergebnis.Free; end; end; procedure TForm1.Button6Click(Sender: TObject); Var i,x : integer; begin for I := 0 to StringGrid1.RowCount - 1 do if StringGrid1.Cells[i,0] = 'Way' then for x := 0 to StringGrid1.RowCount -1 do if StringGrid1.Cells[x,0] = 'Switch' then findStrings(StringGrid1.Cols[i],StringGrid1.Cols[x]); end; |
Re: Cellen im Stringgrid zusammenrechnen
Zitat:
|
Re: Cellen im Stringgrid zusammenrechnen
Ja schon die In der 1 Zeile steht meine überschrift da geh ich durch wo dieser string steht und und versuche diese werte zu übergeben aber nur die werte in der OUT steht und diese stehen in der Spalte bei SwichedDuration
|
Re: Cellen im Stringgrid zusammenrechnen
Aber warum dann 2 geschachtelte Schleifen mit den selben Grenzen?
|
Re: Cellen im Stringgrid zusammenrechnen
Na ich glaube dann habe ich einen Denk fehler drin hab gedacht das der Rest die funktion übernimmt aber anscheinend nicht :lol:
|
Re: Cellen im Stringgrid zusammenrechnen
OK
jetzt bekomme ich die nur die ergebnisse die in der zeile mit Out stehen in die StringList wie Rechne ich die jetzt zusammen jetzt brauch ich aber wirklich eure hilfe das weis ich nicht, hab ja gezeigt das ich will oder
Delphi-Quellcode:
procedure findStrings(sl:TStrings;s:TStrings);
var i :Integer; ergebnis :Tstrings; begin ergebnis:= TStringList.Create; try for i := 1 to Pred(sl.Count)-1 do if (sl[i]) = 'OUT' then begin ergebnis.Add(s[i]); //hier die änderung end; ergebnis.saveToFile('C:\test.txt'); finally ergebnis.Free; end; end; |
Re: Cellen im Stringgrid zusammenrechnen
Delphi-Quellcode:
Allerdings ist Deine Vorgehensweise nicht ganz ungefährlich, da s mindestens so viele Einträge wie sl enthalten muss, sonst knallt es.
function findStrings(sl:TStrings;s:TStrings): double;
var i :Integer; ergebnis :Tstrings; begin Result := 0; ergebnis:= TStringList.Create; try for i := 1 to Pred(sl.Count)-1 do if (sl[i]) = 'OUT' then begin ergebnis.Add(s[i]); //hier die änderung Result := Result + StrToFloatDef(s[i],0); //hier die Ergänzung end; ergebnis.saveToFile('C:\test.txt'); finally ergebnis.Free; end; end; |
Re: Cellen im Stringgrid zusammenrechnen
Die zwei Spalten stehen in Beziehung zueinander ohne OUT gibts auch keine Switch
|
Re: Cellen im Stringgrid zusammenrechnen
Wenn ich mir das ergebnis im Label anzeigen lasse ist es = 0??
|
Re: Cellen im Stringgrid zusammenrechnen
Dann klappt das Umwandeln in Float anscheinend nicht. Was steht denn drin?
|
Re: Cellen im Stringgrid zusammenrechnen
Einfach nur 0
oder mache ich es falsch
Delphi-Quellcode:
Label3.Caption FloatToStr(FindStrings(Stringgrid1................usw.
|
Re: Cellen im Stringgrid zusammenrechnen
Ich meinte, was steht in den Zellen, die Du addieren willst?
|
Re: Cellen im Stringgrid zusammenrechnen
Liste der Anhänge anzeigen (Anzahl: 1)
Achso
Kommawerte siehe Anhang |
Re: Cellen im Stringgrid zusammenrechnen
Die stehten aber wohl mit dem falschen Decimalseparator drin (im Deutschen das Komma).
|
Re: Cellen im Stringgrid zusammenrechnen
Wie, wo, wat, keine Ahnung was du meinst sorry.
Aber ich lasse es mir gerne erklären |
Re: Cellen im Stringgrid zusammenrechnen
Möglicherweise reicht ein kleines
Delphi-Quellcode:
Du musst dem Programm erst sagen, dass Kommazahlen durch einen Punkt (.) getrennt sind, da es normalerweise das Komma (,) ist.
Decimalseparator := '.';
|
Re: Cellen im Stringgrid zusammenrechnen
StrToInt erwartet ',' als Dezimaltrenner
|
Re: Cellen im Stringgrid zusammenrechnen
Sorry wenn ich es jetzt versuche mir leicht zu machen aber wo denn :pale:
|
Re: Cellen im Stringgrid zusammenrechnen
Zitat:
|
Re: Cellen im Stringgrid zusammenrechnen
Hohe Kunst des Programmierers ist es die Hilfe (F1) zu benutzen.
Zitat:
|
Re: Cellen im Stringgrid zusammenrechnen
Erweitern wird das Ganze mal ein wenig:
Delphi-Quellcode:
function findStrings(sl:TStrings;s:TStrings;cSeparator: char = '.'): double;
var i :Integer; ergebnis :Tstrings; OldSep: char; begin OldSep := DecimalSeparator; //Sichern des alten Zustandes DecimalSeparator := cSeparator; //Umstellen des Dezimalseparators Result := 0; ergebnis:= TStringList.Create; try for i := 1 to Pred(sl.Count)-1 do if (sl[i]) = 'OUT' then begin ergebnis.Add(s[i]); //hier die änderung Result := Result + StrToFloatDef(s[i],0); //hier die Ergänzung end; ergebnis.saveToFile('C:\test.txt'); finally ergebnis.Free; end; DecimalSeparator := OldSep; //Wiederherstellen des alten Zustandes end; |
Re: Cellen im Stringgrid zusammenrechnen
Hey Meister DaddyH das funktioniert.
Also wenn ich als Programmierer in einer Firma angestellt wäre, dann wäre die Firma schon Pleite :-D Wer soll den darauf kommen auser so Profies wie Ihr noch nichtmal in der Hilfe steht viel darüber Trotzdem danke |
Re: Cellen im Stringgrid zusammenrechnen
Noch was
Wie kann es sein das 9 stellen nach dem Komma gerechnet wird bei 400 - 500 werten muss man da noch was beachten?? Und wenn ich nur ein Wert habe wird der auch nict angezeigt und 3 werden auch nicht zusammen gezählt |
Re: Cellen im Stringgrid zusammenrechnen
Stepp doch mal durch, so aus der Ferne kann ich da nichts zu sagen.
|
Re: Cellen im Stringgrid zusammenrechnen
Liste der Anhänge anzeigen (Anzahl: 1)
So nochmal zu meinem Problem von gestern
Ich habe mal eine Datei angehängt die, die Werte von einem ganzen monat hat. Wenn ich das mit der funktion zusammen rechne kommt 271539,118000004 Excel gibt mir das Ergebnis raus 271,387,734 was denke ich schon eher hinkommt alleine wegen den nachkommastellen Wie b ekomme ich jetzt das ergebnis hin Achso und sind nur so 6 werte in dem StringGrid rechnet das ding garnicht?? |
Re: Cellen im Stringgrid zusammenrechnen
Ich bekomme das selbe Ergebnis, hab allerdings nicht gegengerechnet. Dann muss man halt mal ermitteln, was denn nun das richtige Ergebnis ist und ggf. noch einmal die Funktion überprüfen.
|
Re: Cellen im Stringgrid zusammenrechnen
Hallo Sascha,
wenn ich die StringList addiere komme ich auf das gleiche Ergebnis wie Du. Ich gehen davon aus das es richtig ist. Du hast in Deiner Liste einige Werte die mit 00.xxx anfangen diese Werte interpretiert Excel nicht als Zahl. Daher ist das Excelergebnis nicht richtig. Grüße Klaus |
Re: Cellen im Stringgrid zusammenrechnen
ich hätte vielleicht noch erwähnen sollen das die Werte der liste in ms angegeben sind und wenn ich diese Werte in minuten umrechne bekomme ich ein Ergebnis raus was niemals stimmen kann
4.52565196666673 sekunden :gruebel: als was sieht excel den 00,xx |
Re: Cellen im Stringgrid zusammenrechnen
Kann es sein das ich einen anderen Variablen typ nehmen muss
|
Re: Cellen im Stringgrid zusammenrechnen
Welches Ergebnis erwartest Du denn? Ich komme auf ca. 4 1/2 Minuten.
|
Re: Cellen im Stringgrid zusammenrechnen
Hallo Sascha,
Excel sieht 00.xx als Text. Ich rechne so um:
Delphi-Quellcode:
und bekomme 4.526 Minuten.
edit1.Text:=format('%.3f',[ergebnis /(1000*60)]);
Wobei der . der DecimalSeparator ist. Grüße Klaus |
Re: Cellen im Stringgrid zusammenrechnen
Das ergebnis habe ich auch aber ich erwarte eigentlich irgendwas mit 4524,xxx minuten
|
Re: Cellen im Stringgrid zusammenrechnen
Und wenn das Sekunden sind statt Millisekunden?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz