Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Verschachtelte For Anweisung (https://www.delphipraxis.net/151182-verschachtelte-anweisung.html)

derzohan 8. Mai 2010 09:16


Verschachtelte For Anweisung
 
Halle Leute,
ich muss eine Facharbeit für den Informatikunterricht schrieben und es gehtum Cäsar Chiffren.

In dem Programm befindet sich eine StringGrid, mit zwei Spalten. In der oberen ist das richtige Alphabeth und in der unteren das verschobene. Darunter ist ein UpDown-Button, mit dem dazugehörigen Edit-Feld. In dem Edit Feld kann ich dann mit Werten von 1-25 die Verschiebung einstellen.

Der Quelltext zum Verschieben siht so aus:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
  for i:=0 to 26 do
  begin
    CaesarStringGrid.Cells[i,0]:=chr(65+i);
    CaesarStringGrid.Cells[i,1]:=chr(65+i);
  end;
end;

procedure TForm1.UpDownClick(Sender: TObject; Button: TUDBtnType);
var VStr:String;
    VInt, i, r, s, b:Integer;
begin

  VStr:=VerschiebewertEdit.TExt;
  VInt:=StrToInt(VStr);

  for i:=0 to 25 do
  begin
    r:=65+i+VInt;

    if r>=90 then
    begin
      for b:=0 to 25 do
      begin
        for s:=91 to 65 do
        begin
          CaesarStringGrid.Cells[s,1]:=chr(b+VInt);
        end;
      end;
    end else
    begin
      CaesarStringGrid.Cells[i,1]:=chr(r);
    end;
  end;

end;
Ich geb zu der Quelltext sieht kompliziert aus. Wenn ich das Programm Compilieren will, meckert Delphi, und lässt die for-Schleife "for s:=91 to 65 do" einfach weg. Falls dieses Programm wenn Delphi nicht mecker würde richtig wäre, sagt mir bitte bescheid, und sagt mir, wie ich den meckerservice abstellen kann. Ansonsten natürlich was ich falsch gemcaht habe.
mfg
Derzohan

himitsu 8. Mai 2010 09:36

Re: Verschachtelte For Anweisung
 
Wenn man von 91 bis 65 aufwärts Zählen will, dann geht das nicht, darum läßt Delphi dieses weg, da diese Schleife nicht benötigt wird.

Du mußt also Rückwärts zählen :zwinker:
Delphi-Quellcode:
for s:=91 downto 65 do

Wolfgang Mix 8. Mai 2010 09:38

Re: Verschachtelte For Anweisung
 
Ich habe deinen Quelltext noch nicht genau studiert, aber die Zeile
Zitat:

for-Schleife "for s:=91 to 65 do
müsste so heissen:
Delphi-Quellcode:
for s:=91 downto 65 do
[Edit] Zu spät [/Edit] :)

LargoD 8. Mai 2010 09:38

Re: Verschachtelte For Anweisung
 
Zitat:

Zitat von derzohan
Delphi-Quellcode:
        for s:=91 to 65 do

Was erwartest Du denn, was diese Zeile tun soll?

Gruß
Erich

Chemiker 8. Mai 2010 11:22

Re: Verschachtelte For Anweisung
 
Hallo,

Zitat:

Was erwartest Du denn, was diese Zeile tun soll?
Ich vermute er meint wenn er für 91€ an der Tankstelle tankt und 65€ an der Kasse abgibt, dass er 26€ zurück bekommt.

Bis bald Chemiker

xZise 8. Mai 2010 12:02

Re: Verschachtelte For Anweisung
 
Zitat:

Zitat von Chemiker
Hallo,

Zitat:

Was erwartest Du denn, was diese Zeile tun soll?
Ich vermute er meint wenn er für 91€ an der Tankstelle tankt und 65€ an der Kasse abgibt, dass er 26€ zurück bekommt.

Bis bald Chemiker

Wer sagt, dass das to zwingend raufzählend ist? Ich meine, es hätte doch genauso gut sein können, dass to immer passend zählt?

Quasi:
Delphi-Quellcode:
var
  i : Integer;
  stop : Boolean;
begin
  i := 91;
  stop := false;
  while not stop do
  begin
    // Do Foo
    if i = 65 then
      stop := true
    else
      Inc(i, Sgn(65 - 91));
  end;
end;
MfG
Fabian

himitsu 8. Mai 2010 12:25

Re: Verschachtelte For Anweisung
 
Zitat:

Zitat von xZise
Wer sagt, dass das to zwingend raufzählend ist?

Das ist einfach so und es ist auch gut so.

Sonst müßtest du z.B. bei sowas (s = String) die Schleife immer mit einem IF absichern, da 1 to 0 ja sonst enorme Probleme bereiten würde.
Delphi-Quellcode:
For i := 1 to Length(s) do
also to immer nur hoch
und downto runtern


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 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