AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zur StringGrid

Ein Thema von Vidar92 · begonnen am 18. Okt 2012 · letzter Beitrag vom 19. Okt 2012
Antwort Antwort
Vidar92

Registriert seit: 18. Okt 2012
7 Beiträge
 
#1

Frage zur StringGrid

  Alt 18. Okt 2012, 22:57
Hey Leute, ich habe folgendes Problem.

Ich habe nach langer Zeit wieder mit dem Programmieren angefangen und nun hab ich ein kleines Problemchen mit der StringGrid.
Ich will in einer bestimmten Zelle (meinetwegen 4,6 als Beispiel) etwas berechnen lassen.
Die Formel für diese Berechnung lautet:
30*Stufe*1,1^Stufe

Nun ist es so, das diese "Stufe" eine Zelle der StringGrid sein soll (Beispiel 1,1). Wie realisiere ich nun, das die Zelle 4,6 nach der Formel 30*StringGrid.cells[1,1]*1.1^StringGrid[1,1] rechnet?!

Ich weiß man kann auch für die Potenz die Math Unit beim Interface reinschreiben und es dann mit dem Befehl Power(1.1,StringGrid[1,1] irgendwie realisieren, doch ich komme nicht drauf.
Ich hatte es schonmal hinbekommen vor 2 oder 3 Jahren, aber nun sitze ich seit 1 Woche ohne Lösung.

Vllt könntet Ihr mir helfen?
Momentan sieht es bei mir so aus:
StringGrid1.Cells[4,1]:=FloatToStr(StrToFloat(StringGrid1.Cells[1,1])*30)*StrToFloat(Power(1.1,StringGrid1.Cells[1,1]));

Wo liegt das Problem an der ganzen Sache?
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Frage zur StringGrid

  Alt 18. Okt 2012, 23:20
Mal davon abgesehen, dass ich dafür das böse with nutzen würde, so dass die Zeile etwas übersichtlicher aussieht

with StringGrid1 do Cells[4,1] := FloatToStr(StrToFloat(Cells[1,1]) * 30) * StrToFloat(Power(1.1, Cells[1,1])); erkenne ich dein Fehler höchstens darin, dass du mit FloatToStr und StrToFloat etwas durcheinander kommst

evtl.

Delphi-Quellcode:
with StringGrid1 do Cells[4,1] := FloatToStr(

StrToFloat(Cells[1,1]) * 30

)

* // <<<<<<<<<<<<<<<< hier multiplizierst du einen String

StrToFloat(Power(1.1,

Cells[1,1] // <<<<<<<<<<<< das ist ein String. Vorher in Float umrechnen

)

);
Edit:

evtl.

Delphi-Quellcode:
with StringGrid1 do Cells[4,1] := FloatToStr(

StrToFloat(Cells[1,1]) * 30

*

Power(1.1, StrToFloat(Cells[1,1])

)); // ungeprüft
oder besser, weil man nicht so durcheinander kommt

Delphi-Quellcode:
var
  x: Double;
begin
  with StringGrid1 do
  begin
    x := StrToFloat(Cells[1,1]); //evtl. ist StrToFloatDef besser
    Cells[4,1] := FloatToStr(x * 30 * Power(1.1, x));
  end;
end;
Und nutze Leerzeichen. Ist ja kein Wunder, dass man durcheinander kommt.

Geändert von Popov (18. Okt 2012 um 23:28 Uhr)
  Mit Zitat antworten Zitat
Vidar92

Registriert seit: 18. Okt 2012
7 Beiträge
 
#3

AW: Frage zur StringGrid

  Alt 18. Okt 2012, 23:46
Danke für den Versuch der Hilfe, jedoch hat nichts geklappt. Ich habe auch aus deinen Hinweisen versucht bisschen was umzuformen damit es dann vlt klappt, aber es geht nicht.


Vllt hilft es ja, wenn ich ein bissl das Prog beschreibe:

Form1:
Durch Auwahl in einer Combobox gelange ich zu Form2, wo die StringGrid ist. Dort wähle ich dann in einer weiteren Combobox aus, welche Aktion ich ausführen möchte. Eine davon ist halt die Eingabe der Werte für die StringGrid. Wenn ich diese nun bestätige geht Form3 auf, wo ich dann die Werte eintrage und diese bestätige. Die Werte werden auch in die vorgesehen Zellen eingetragen, soweit so gut.
Nun kommt ja mein Hauptproblem. Sobald diese Werte (Meinetwegen 35 in Zelle 1,1) eingetragen sind, soll StringGrid mit der Formel dann in die vorgesehen Zelle berechnen.

Wie gesagt, ich hatte es schonmal, jedoch erinnere ich mich nicht mehr dran und finde es leider auch nicht heraus
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: Frage zur StringGrid

  Alt 18. Okt 2012, 23:56
Ich weiß immer noch nicht so recht was das Problem ist, aber ich gebe dir einen kleinen Tip, weil ich denke, dass du lediglich durch deine Schreibweise in der du keine Leerzeichen einsetzt und dadurch die Formel derart unleserlich machst, dass man den Überblick verliert, einfach nur durcheinander kommst.

Der Tipp ist: lese zuerst die Werte aus der SG und konvertiere sie in Realzahlen. Rechne dann mit Realzahlen. Schreibe das Ergebnis in eine Realzahl Variable. Erst wenn alles berechnet ist, konvertiere diese Realzahl in String und schreib sie in SG.

Ich brauchte fast zwei Minuten bis ich deine Formel verstanden. Das ist das Superbeispiel wie man die Übersicht verlieren kann.
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#5

AW: Frage zur StringGrid

  Alt 19. Okt 2012, 07:59
--- Redundantes Gefasel meinerseits ---

Geändert von Furtbichler (19. Okt 2012 um 07:59 Uhr) Grund: Wer komplett lesen kann, ist klar im Vorteil
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Frage zur StringGrid

  Alt 19. Okt 2012, 08:50
Trenne die Daten von der Visualisierung (StringGrid) und benutze das StringGrid nur zur Anzeige und Eingabe.

Ein darunterliegendes 2-dimensionales Array speichert alles als Variant ab und darauf kannst du dann die Berechnungen durchführen und wieder anzeigen lassen.

Noch geschickter wäre allerdings ein Record mit der position und dem Inhalt in einer Liste zu verwalten.
Neuere Delphi-Versionen bringen auch ein TDictionary und ein TPair mit sich, da ist auch der Zugriff wesentlich einfacher zu gestalten.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#7

AW: Frage zur StringGrid

  Alt 19. Okt 2012, 10:43
Nun kommt ja mein Hauptproblem. Sobald diese Werte (Meinetwegen 35 in Zelle 1,1) eingetragen sind, soll StringGrid mit der Formel dann in die vorgesehen Zelle berechnen.
Die Zellen des Stringgrid nehmen von dir festgelegte Texte entgegen und das Stringgrid zeigt diese als Tabellen an. Mehr macht das Stringgrid nicht. Die Berechnung ist deine Aufgabe.
Wenn ich diese nun bestätige geht Form3 auf, wo ich dann die Werte eintrage und diese bestätige. Die Werte werden auch in die vorgesehen Zellen eingetragen, soweit so gut.
Der Ausgangswert ist also bekannt. Wie wäre es wenn du an dieser Stelle auch gleich die Berechnung durchführst und das Ergebnis in den entsprechenden Zellen ablegst?
  Mit Zitat antworten Zitat
Vidar92

Registriert seit: 18. Okt 2012
7 Beiträge
 
#8

AW: Frage zur StringGrid

  Alt 19. Okt 2012, 16:50
Hab die Lösung meines Problemes heute Mittag lösen können, da mir einfiel, wieso nicht einfach über die Eingabe berechnen lassen. Immerhin kommen die Werte über nen Edit-Feld in die StringGrid und diese werden ja auch für die Berechnung benötigt!

Ja ich weiß, wirr warr aber ich sehe dennoch gut durch^^

Form2.StringGrid1.Cells[4,1]:=FloatToStr(StrToFloat(Edit1.Text)*30*(Power(1.1, StrToFloat(Edit1.Text))));

Die Berechnung klappt nun einwandfrei so wie sie sein soll =). Ich danke dennoch für eure Hilfen =)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#9

AW: Frage zur StringGrid

  Alt 19. Okt 2012, 16:55
Ja ich weiß, wirr warr aber ich sehe dennoch gut durch^^
In einem halben Jahr auch noch?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Vidar92

Registriert seit: 18. Okt 2012
7 Beiträge
 
#10

AW: Frage zur StringGrid

  Alt 19. Okt 2012, 17:43
Bisher habe ich immer durchgesehen, auch wenn der Quelltext mal 30-50 A4 Seiten lang war^^


Aber evlt nehme ich doch lieber eure Tipps an, denn denke mal schon das Ihr erfahrener seit als ich es noch bin
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz