Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Das kleine Einmaleins OHO


Rafa - Do 15.11.07 19:04
Titel: Das kleine Einmaleins OHO
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 :]


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 - Fr 16.11.07 07:22

Hi.
Mach's Dir doch nicht so schwer, Du "Delphi-Experte":


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:


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. :-)


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

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:

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

Viele Grüße,
Miri


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

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:


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


Rafa - 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 :)