Autor Beitrag
Rafa
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 15.11.07 19:04 
Hi alle,

Ich, Delphiexperte, wurde damit beauftragt ein Delphiprogrmam über das kleine Einmaleins zu schreiben. Ich glaube, dass die Schleifen soweit stimmen. Der Fehler sollte bei der "str" Ausgabe liegen. Letztendlich ist das auch nicht von mir, d.h., ich habe mir das bei einem Klassenkameraden angeguckt und wollte es ähnlich ausgeben, was leider nicht geglückt ist. Bin für jeden hilfreichen Tip dankbar :]

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm1.Rechne1Click(Sender: TObject);
begin
     //Verarbeitung
     //Schleifenverarbeitung
     for I:=1 to 10 do
         begin
         zeile:=zeile+1;
         For A:=1 to 10 do
             begin
             summe:=I*A;
             end;


         str:=I 'x' A '=' summe;
         stringgrid1.cells [0, zeile]:=str (string);
         end;
end;

end.
Logikmensch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 390

Win XP
Delphi 2007 Prof., XE2, XE5
BeitragVerfasst: Fr 16.11.07 07:22 
Hi.
Mach's Dir doch nicht so schwer, Du "Delphi-Experte":

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
With StringGrid1 do begin
  rowcount:=11//10 Zeilen + Beschriftung
  colcount:=11//10 Spalten + Beschriftung
  fixedrows:=1//Beschriftungs-Kopf
  fixedcols:=1//Beschriftungs-Spalte
  //Beschriftung oben:
  for spalte:=1 to 10 do
    Cells[0,spalte]:=inttostr(spalte-1);
  //Beschriftung links:
  for zeile:=1 to 10 do
    Cells[zeile,0]:=inttostr(zeile-1);
  //Berechnung des 1*1:
  for zeile:=1 to 10 do 
    for spalte:=1 to 10 do
      Cells[zeile,spalte]:=inttostr((zeile-1)*(spalte-1));
end;


oder noch eleganter:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
With StringGrid1 do begin
  rowcount:=11//10 Zeilen + Beschriftung
  colcount:=11//10 Spalten + Beschriftung
  fixedrows:=1//Beschriftungs-Kopf
  fixedcols:=1//Beschriftungs-Spalte
  //Beschriftung oben:
  for spalte:=1 to 10 do
    Cells[0,spalte]:=inttostr(spalte-1);
  //Beschriftung links:
  for zeile:=1 to 10 do
    Cells[zeile,0]:=inttostr(zeile-1);
  //Berechnung des 1*1:
  value:=1;
  for zeile:=1 to 10 do 
    for spalte:=1 to 10 do begin
      Cells[zeile,spalte]:=inttostr(value);
      inc(value);
    end{for}
end;


Ist aus dem Kopf programmiert - Fehler nicht 100%ig ausgeschlossen, aber so würde ich das 1x1 demonstrieren.
Kann schon in einem FormCreate untergebracht werden, dann ist nicht einmal ein Mausklick nötig. :-)

_________________
Es gibt keine Probleme - nur Lösungen!
Miri
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 657


Delphi 3 Prof., Delphi 2005 PE
BeitragVerfasst: Fr 16.11.07 08:32 
Guten Morgen!
Erstmal so am Rande: es ist unglaublich hilfreich, wenn man zu seinem Problem auch noch dazu sagt, wann es auftaucht, bzw. was für ein Fehler gemeldet wird, das erleichtert das Rätselraten ein wenig!
Ich würde aber mal tippen, dass dein Fehler da liegt:
user profile iconRafa hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
2:
         str:=I 'x' A '=' summe;
         stringgrid1.cells [0, zeile]:=str (string);

Wenn man Strings zusammensetzen will, muss man die einzelnen Teile mit + verbinden!
Und was auch immer du mit str(string) erreichen wolltest, lass es einfach weg *g*
Versuchs mal so:
ausblenden Delphi-Quelltext
1:
2:
         str:=I + 'x' + A + '=' + summe;
         stringgrid1.cells [0, zeile]:=str;

Viele Grüße,
Miri

_________________
Anonymes Eckenkind
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Fr 16.11.07 09:51 
Delphiexperte? :roll:
Ich nehme an, das sollte Ironie sein. Das solltest Du dann wenigstens in Anführungszeichen schreiben. :wink:
ausblenden Delphi-Quelltext
1:
2:
str:=I 'x' A '=' summe;
stringgrid1.cells [0, zeile]:=str (string);
Das ist natürlich völliger Blödsinn.
Korrekt muss es so aussehen:

ausblenden Delphi-Quelltext
1:
2:
str:= IntToStr(I) + 'x' + IntToStr(A) + '=' + IntToStr(summe);
stringgrid1.cells [0, zeile]:= str;

Wie user profile iconMiri schon schrieb, werden Strings mit "+" verknüpft. Beim Mischen von Zahlen und Strings, müssen die Zahlen natürlich vorher in Strings umgewandelt werden (IntToStr). In Deinem Beispiel bin ich davon ausgegangen, dass die Variablen I, A und summe vom Typ Integer sind. Falls sie Real, Double o.ä (also Float-Typen) sind, dann musst Du FloatToStr verwenden.

Was Du mit der letzten Zeile erreichen wolltest, verschließt sich mir.
Miri
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 657


Delphi 3 Prof., Delphi 2005 PE
BeitragVerfasst: Fr 16.11.07 09:56 
user profile iconjasocul hat folgendes geschrieben:
Beim Mischen von Zahlen und Strings, müssen die Zahlen natürlich vorher in Strings umgewandelt werden (IntToStr).

Verdammt, ich mach in letzter Zeit einfach zu viel Java :mrgreen:

_________________
Anonymes Eckenkind
Rafa Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 16.11.07 22:30 
Danke für die Tips :D. Es hat letztendlich mit einigen Fehlern funktioniert. "Delphiexperte" war natürlich mein purer Ernst :)