AGB  ·  Datenschutz  ·  Impressum  







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

Schleifen imStringGrid

Ein Thema von Peti · begonnen am 16. Feb 2005 · letzter Beitrag vom 19. Feb 2005
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: Schleifen imStringGrid

  Alt 18. Feb 2005, 20:06
Zitat von Peti:
Das soll ja alles in einer repeat - Schleife passieren und wenn ich die repeat- Schleife habe, hab ich keine Ahnung wie ich das ins StringGrid krieg.
Das ich dsa mit der repeat -Schleife ausrechne und dann hinschreibe:
Code:
StringGrid.cells[i,0]:=floattostr(x);
das geht bei mir nicht, denn es passiert nichts.
"Das geht bei mir nicht" ist eine ziemlich ungenaue Fehlerbeschreibung. Was genau passiert denn, wenn das Programm ausgeführt wird? Wird gar nichts ins StringGrid geschrieben? Oder nur die erste Zahl? Oder...
Vielleicht kannst du ja auch mal etwas Quelltext zeigen, damit man das Problem besser versteht.

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Peti

Registriert seit: 16. Feb 2005
9 Beiträge
 
#12

Re: Schleifen imStringGrid

  Alt 19. Feb 2005, 11:15
Das ist mein bisheriger Quelltext:
Code:
var
  Form1: TForm1;
   min, max, schritt,i:real ;
procedure TForm1.Button1Click(Sender: TObject);
begin
min:=0;
max:=0;
schritt:=0;
min:=strtofloat(E_min.text);
max:=strtofloat(E_max.text);
schritt:=strtofloat(E_Schrittweite.text);
repeat i:=min+schritt;
until i=max;
Sg.cells[i,0]:=floattostr(i);
end;
So wie er jetzt ist wird das Programm gar nicht erst gestartet, aber wenn ich alles in Integer Werte mache, wird das Programm gestartet, es wird aber nichts ausgegeben.
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: Schleifen imStringGrid

  Alt 19. Feb 2005, 12:54
Zitat von Peti:
Das ist mein bisheriger Quelltext:
Code:
var
  Form1: TForm1;
   min, max, schritt,i:real ;
procedure TForm1.Button1Click(Sender: TObject);
begin
min:=0;
max:=0;
schritt:=0;
min:=strtofloat(E_min.text);
max:=strtofloat(E_max.text);
schritt:=strtofloat(E_Schrittweite.text);
repeat i:=min+schritt;
until i=max;
Sg.cells[i,0]:=floattostr(i);
end;
So wie er jetzt ist wird das Programm gar nicht erst gestartet, aber wenn ich alles in Integer Werte mache, wird das Programm gestartet, es wird aber nichts ausgegeben.
Du musst die Zeile Sg.cells[i,0]:=floattostr(i); IN die repeat-Schleife schreiben, wenn mehrere Zahlen ausgegeben werden sollen:
Delphi-Quellcode:
repeat i:=min+schritt;
 Sg.cells[i,0]:=floattostr(i);
until i>=max;
MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Peti

Registriert seit: 16. Feb 2005
9 Beiträge
 
#14

Re: Schleifen imStringGrid

  Alt 19. Feb 2005, 13:13
Code:
begin
min:=0;
max:=0;
schritt:=0;
min:=strtofloat(E_min.text);
max:=strtofloat(E_max.text);
schritt:=strtofloat(E_Schrittweite.text);
repeat i:=min+schritt;
Sg.cells[i,0]:=floattostr(i);
until i=max;

end;
Wenn ich das so mache, wird das Programm nicht gestartet, sondern es kommt die Meldung "Inkompatible Typen:'Integer' und 'Real'". Wenn ich dann aber alles in Integer umwandle
Code:
begin
min:=0;
max:=0;
schritt:=0;
min:=strtoint(E_min.text);
max:=strtoint(E_max.text);
schritt:=strtoint(E_Schrittweite.text);
repeat i:=min+schritt;
Sg.cells[i,0]:=inttostr(i);
until i=max;

end;
Dann wird immer noch nichts ins StrinGrid geschrieben.
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: Schleifen imStringGrid

  Alt 19. Feb 2005, 13:28
Welche Typen nimmst du denn nun für min, max und Schritt? Integer oder real?
Bei Integer musst du Delphi-Referenz durchsuchenIntToStr nehmen, für real Delphi-Referenz durchsuchenFloatToStr.
Und welche Werte gibst du denn für min, max und schritt ein?

[Edit]

Hast du schon mal die Prozedur von oben ausprobiert? Falls nicht, hier nochmal eine verbesserte Version:
Delphi-Quellcode:
procedure Zahlen_in_StringGrid(MinWert, MaxWert: Integer; abstand, zeile: Cardinal; var strGrd: TStringGrid);
var i,j: Integer;
begin
if MaxWert<MinWert then begin
  i:= MaxWert;
  MaxWert:= MinWert;
  MinWert:= i;
end;//if
i:= minWert;
while i<=MaxWert do begin
  j:= (i-MinWert) div abstand +1;
  strGrd.Cells[j, zeile]:= IntToStr(i);
  i:= i+abstand;
end;//while
end;
(ungetestet)
Ein Beispielaufruf könnte dann so aussehen:
Delphi-Quellcode:
//Zahlen von 0 bis 8 mit Abstand 2 in die erste Zeile des StringGrid SG
Zahlen_in_StringGrid(0, 8, 2, 1, SG);
[/Edit]

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Peti

Registriert seit: 16. Feb 2005
9 Beiträge
 
#16

Re: Schleifen imStringGrid

  Alt 19. Feb 2005, 16:18
Ja, das funktioniert!
Könntest du mir kurz erklären was da im Quelltext steht? Und könnte man das so umwandeln das man das mit reellen Zahlen machen kann?
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#17

Re: Schleifen imStringGrid

  Alt 19. Feb 2005, 18:52
Zitat von Peti:
Ja, das funktioniert!
Die selbe (bzw. eine fast gleiche) Prozedur steht schon am Anfang des Threads. Die hättest du auch gleich nehmen können.
Zitat von Peti:
Und könnte man das so umwandeln das man das mit reellen Zahlen machen kann?
Ja, einfach Integer durch Real ersetzen und statt IntToStr nimmt man FloatToStr.
Delphi-Quellcode:
procedure Zahlen_in_StringGrid(MinWert, MaxWert, abstand: Real; zeile: Cardinal; var strGrd: TStringGrid);
var i: Real;
    j: Integer;
begin
if MaxWert<MinWert then begin
  i:= MaxWert;
  MaxWert:= MinWert;
  MinWert:= i;
end;//if
i:= minWert;
abstand:= abs(abstand);
while i<=MaxWert do begin
  j:= Round((i-MinWert)/abstand +1);
  strGrd.Cells[j, zeile]:= FloatToStr(i);
  i:= i+abstand;
end;//while
end;
MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Peti

Registriert seit: 16. Feb 2005
9 Beiträge
 
#18

Re: Schleifen imStringGrid

  Alt 19. Feb 2005, 19:52
Danke!! Es geht jetzt alles
Zitat:
Die selbe (bzw. eine fast gleiche) Prozedur steht schon am Anfang des Threads. Die hättest du auch gleich nehmen können.
Schein irgendwie die Angewohnheit zu haben alles komplizirter zu machen als es ist
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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:06 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