AGB  ·  Datenschutz  ·  Impressum  







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

Wertübergbae für einen Stringgrid

Ein Thema von Technikus · begonnen am 8. Aug 2005 · letzter Beitrag vom 8. Aug 2005
Antwort Antwort
Seite 1 von 3  1 23      
Technikus

Registriert seit: 2. Aug 2005
46 Beiträge
 
#1

Wertübergbae für einen Stringgrid

  Alt 8. Aug 2005, 09:34
Hallo!
Ich bin Anfänger im Programmieren mit Delphi 2005 und bitte um Hilfe für ein Stringgrid Problem.
Ich möchte die in einem Stringgrid1 erfassten 9 Messwerte einer Solarzelle für Spannung und Stromstärke erfassen. Diese sollen für die Berechnung der Leistung an einen Stringggrid2 übergeben werden.
Als Problemmeldung kommt beim Probelauf: '"ist kein gültiger Gleitkommawert.
Vielleicht weiß jemand Rat. Danke im voraus.


Mein Quellcode sieht so aus:

[delphi]procedure TForm1.Button4_Berechne_PClick(Sender: TObject);
var
j: smallInt;{Lauf-Variablen zum Berechnen}
leistung: double;
u,i: array [1..9] of double;
begin
for j:=1 to 9 do
begin
u[j]:=StrToFloat(StringGrid1.Cells[1,j]);
i[j]:=StrToFloat(StringGrid1.Cells[2,j]);
end;
for j:=1 to 9 do
with StringGrid2 do {Ausgabe der berechneten Leistung}
begin
Cells[0,j]:= FloatToStr(leistung);
leistung:= u[j]* i[j];
end;
end;
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#2

Re: Wertübergbae für einen Stringgrid

  Alt 8. Aug 2005, 10:37
Hallo Technikus ,
IMHO liegt dein problem darin, dass du versuchst einen Leerstring in eine Fließkommazahl umzuwandeln(StrToFloat). Das funktioniert nicht. Ich nehme an in deinem StringGrid steht in einer Zenne nix und da versuchst du zu lesen. Setz mal n Breakpoint und steppe mit [F8] durch um die Zelle/die Variable zu finden.

mfg

Christian

Nachtrag:
Fast hätte ich es vergessen:
Herzlich Willkommen in der DP!
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Wertübergbae für einen Stringgrid

  Alt 8. Aug 2005, 10:40
Hallo Technikus,

herzlich willkommen in der Delphi-PRAXiS.

Du hast beim Zugriff auf Cells den Spalten- und ZeileIndex vertauscht. Und die Berechnung solltest du vor der Ausgabe erledigen.

Delphi-Quellcode:
procedure TForm1.CalcButtonClick(Sender: TObject);
var
  i: integer; // Laufvariable
  dLeistung: double;
  aVolt, aAmpere: array [1..9] of double;
begin
  for i := 1 to 9 do begin
    aVolt[i] := StrToFloat(sgMesswerte.Cells[i, 1]);
    aAmpere[i] := StrToFloat(sgMesswerte.Cells[i, 2]);
  end;

  { Ausgabe der berechneten Leistung }
  for i := 1 to 9 do
    with sgErgebnisse do begin
      dLeistung := aVolt[i] * aAmpere[i];
      Cells[i, 0]:= FloatToStr(dLeistung);
    end;
  end;
end.
Grüße vom marabu
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#4

Re: Wertübergbae für einen Stringgrid

  Alt 8. Aug 2005, 10:57
Zitat von marabu:
Hallo Technikus,

herzlich willkommen in der Delphi-PRAXiS.

Du hast beim Zugriff auf Cells den Spalten- und ZeileIndex vertauscht. Und die Berechnung solltest du vor der Ausgabe erledigen.
Hm...jetzt wo dus sagst. Da haben wir ja schon die Fehlerstelle. Da Zeilen und Spalten vertauscht waren hast du auf leere Zellen zugregriffen...
Ich muss zugeben ich war zu faul mich durch den Code zu quälen.

@Technikus:
Zur besseren Lesbarkeit verwende nächstes Mal bitte auch einen abschließenden delphi-Tag. Is für mich zwar nur ne unzureichende Entschuldigung, dass ich mich nicht eingehender damit beschäftigt habe, aber besser als nix...

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Technikus

Registriert seit: 2. Aug 2005
46 Beiträge
 
#5

Re: Wertübergbae für einen Stringgrid

  Alt 8. Aug 2005, 11:42
Hallo Christian, hallo marabu

Danke für die Willkommensgrüße und die Hilfe.

Diesen Satz verstehe ich nicht.
"Setz mal n Breakpoint und steppe mit [F8] durch um die Zelle/die Variable zu finden."
Ich habe alle Zellen mit Zahlen gefüllt.
Im Quelltext von marabu sind doch die Spalte und Zeile des Stringgrid vertauscht. Habe ich also probiert, funktioniert aber nicht. Im Buch steht geschrieben, dass im StringGrid die Spalte zuerst und dann die Zeile geschrieben wird. also StringGrid.Cells[spalte,zeile];
Die Berechnungsvorschrift habe ich vorgezogen.

Gruß Technikus
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#6

Re: Wertübergbae für einen Stringgrid

  Alt 8. Aug 2005, 11:51
Zitat von Technikus:
Im Quelltext von marabu sind doch die Spalte und Zeile des Stringgrid vertauscht. Habe ich also probiert, funktioniert aber nicht. Im Buch steht geschrieben, dass im StringGrid die Spalte zuerst und dann die Zeile geschrieben wird. also StringGrid.Cells[spalte,zeile];
Was Funktioniert nicht ?


Delphi-Quellcode:
var
 s: string;
 f: real;
begin
  f:= StrToFloat('1.5'); // <-- kein gültiger Gleitkommawert -<<<
  f:= StrToFloat('1,5'); // <---<<< OK
  s:= FloatToStr(f);
end;
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Technikus

Registriert seit: 2. Aug 2005
46 Beiträge
 
#7

Re: Wertübergbae für einen Stringgrid

  Alt 8. Aug 2005, 11:59
Halle turboPASCAL,
ich habe zur Probe nur ganze Zahlen eingesetzt und erhalte die Meldung "ist kein gültiger Gleitkommawert.
Gruß Technikus
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Wertübergbae für einen Stringgrid

  Alt 8. Aug 2005, 12:10
Hallo Technikus,

zuerst der Spalten-, dann der Zeilenindex - so ist es korrekt. Wenn deine Messwerte in Spalten angeordnet sind, dann hattest du den Index nicht vertauscht - sorry. Aber beachte, dass die Indexwerte bei 0 beginnen und eventuelle Zeilen- und Spaltenüberschriften (FixedCols, FixedRows) von dir berücksichtigt werden müssen. Wenn du also 9 Werte und keine Spaltenüberschrift hast, dann läuft dein Zeilenindex von 0 bis 8. Der Zugriff mit 9 liefert dann den von dir beschriebenen Fehler.

marabu
  Mit Zitat antworten Zitat
Technikus

Registriert seit: 2. Aug 2005
46 Beiträge
 
#9

Re: Wertübergbae für einen Stringgrid

  Alt 8. Aug 2005, 12:31
Hallo marabu,
ich habe eine Kopfzeile und eine Nummerierungszeile programmiert.
Daher habe ich das array von 1-9 gesetzt.
Sollte ich vielleicht den kompletten Quelltext nochmal anhängen?
Wenn ja (ich habe das in der eurigen Form noch nicht gemacht) wie stelle ich das an,dass der Text eingerahmt ist?
Gruß Technikus
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Wertübergbae für einen Stringgrid

  Alt 8. Aug 2005, 12:37
Zitat von Technikus:
Wenn ja (ich habe das in der eurigen Form noch nicht gemacht) wie stelle ich das an,dass der Text eingerahmt ist?
hallo technikus,

einfach den quellcode in die delphitags einschließen:
[ delphi]showmessage('Hallo');[/ delphi]

(dabei die leerzeichen weglassen)

aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 21:09 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