AGB  ·  Datenschutz  ·  Impressum  







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

Verschachtelte For Anweisung

Ein Thema von derzohan · begonnen am 8. Mai 2010 · letzter Beitrag vom 8. Mai 2010
Antwort Antwort
derzohan

Registriert seit: 8. Mai 2010
1 Beiträge
 
#1

Verschachtelte For Anweisung

  Alt 8. Mai 2010, 09:16
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.140 Beiträge
 
Delphi 12 Athens
 
#2

Re: Verschachtelte For Anweisung

  Alt 8. Mai 2010, 09:36
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
for s:=91 downto 65 do
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Verschachtelte For Anweisung

  Alt 8. Mai 2010, 09:38
Ich habe deinen Quelltext noch nicht genau studiert, aber die Zeile
Zitat:
for-Schleife "for s:=91 to 65 do
müsste so heissen:
for s:=91 downto 65 do [Edit] Zu spät [/Edit]
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
LargoD

Registriert seit: 8. Jun 2007
42 Beiträge
 
#4

Re: Verschachtelte For Anweisung

  Alt 8. Mai 2010, 09:38
Zitat von derzohan:
        for s:=91 to 65 do
Was erwartest Du denn, was diese Zeile tun soll?

Gruß
Erich
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Verschachtelte For Anweisung

  Alt 8. Mai 2010, 11:22
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 gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Verschachtelte For Anweisung

  Alt 8. Mai 2010, 12:02
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
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.140 Beiträge
 
Delphi 12 Athens
 
#7

Re: Verschachtelte For Anweisung

  Alt 8. Mai 2010, 12:25
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.
For i := 1 to Length(s) do also to immer nur hoch
und downto runtern
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


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