Announcement

Collapse
No announcement yet.

Quelltext erörtern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Quelltext erörtern

    Hallo Jungs. Mein Sohn muss einen Quelltext von Delphi erklären können. Ich dachte ich kenne mich mit Delphi aus, doch dieser Quelltext weißt mir meine Grenzen auf.
    Könnt ihr ihn vielleicht mal erklären, wenn möglich gleich dahinter schreiben.
    Hier ist der Text:

    unit Figur;

    interface

    uses
    SysUtils, Classes, System.ComponentModel, Borland.Vcl.Controls,
    Borland.Vcl.ExtCtrls;

    type
    TFigur = class(TImage)
    private
    { Private-Deklarationen }
    protected
    { Protected-Deklarationen }
    public
    procedure Move(xziel, yziel,speed:integer);virtual;
    { Public-Deklarationen }
    published
    { Published-Deklarationen }
    end;

    procedure Register;

    implementation

    procedure TFigur.Move(xziel,yziel,speed:integer);
    const zeit=100;
    begin
    dec(xziel, width div 2); //
    dec(yziel, height div 2);
    if left<xziel>= xziel
    else
    if left> xziel then
    repeat
    left:=left - speed;
    repaint; sleep (zeit);
    until left <= xziel;
    if top<yziel>= yziel
    else
    if top> yziel then
    repeat
    top:=top - speed;
    repaint; sleep (zeit);
    until top <= yziel;
    end;

    procedure Register;
    begin
    RegisterComponents('Beispiele', [TFigur]);
    end;

    end.

    Mfg
    der überforderte Vater

    Nach oben

  • #2
    Der Code erweitert ein Image um die Möglichkeit, sich an eine andere Stelle mit einem horizontalen und einem vertikalem Zug hinbewegen zu können? Es wäre nett, wenn die Frage bisschen konkreter wird Was genau ist den unklar? Die Befehle oder der Grund für die Bewegung?

    Das hier:
    if top<yziel>= yziel
    else
    sieht nicht nur ungewöhnlich aus, fehlt da vor dem else nicht noch was? Der doppelte Vergleich macht auch keinen Sinn.
    Schöne Grüße, Mario

    Comment


    • #3
      Der ganze Quelltrxt ist mir unkalr. Kannst du nicht mal zeile für zeile erklären.
      Mein Sohn hat diesen Text von seiner Lehererin so bekommen.
      Danke für deine Hilfe

      Mfg

      Comment


      • #4
        Den Code kann man doch sicherlich kompileiren und dann in Aktion erleben, oder ?
        MfG
        Cheat-Sheets for Developers / Programming Quotes

        Comment


        • #5
          Also, ich mache es mal im abgekürzten Stil:

          // Name der Unit, um welches es geht
          unit Figur;

          // Start vom Interface Teil. Jede Unit besteht aus einem interface und einer Implementierungsschicht
          interface

          // Eingebundene fremde Units. Es handelt sich scheinbar um ein Programm für das Net Framework
          uses
          SysUtils, Classes, System.ComponentModel, Borland.Vcl.Controls,
          Borland.Vcl.ExtCtrls;

          type
          // Es wird eine Klasse TFigur, basierend auf TImage angelegt
          TFigur = class(TImage)
          private
          { Private-Deklarationen }
          protected
          { Protected-Deklarationen }
          public
          // Die neue Klasse soll nur eine zusätzliche procedure enthalten. Diese
          // ist öffentlich (public) und kann von abgeleiteten Klassen
          // bei Bedarf überschrieben werden (virtual);
          procedure Move(xziel, yziel,speed:integer);virtual;
          { Public-Deklarationen }
          published
          { Published-Deklarationen }
          end;

          // Register ist die procedure, mit der die Komponente in der IDE
          // registriert wird, damit sie in der Komponenten-Palette verfügbar ist
          procedure Register;

          implementation

          // Eigentliche procedure, welche ein Image bewegen soll
          procedure TFigur.Move(xziel,yziel,speed:integer);
          const zeit=100;
          begin
          // Es wird davon ausgegangen, dass das Bild in der Mitte angefasst
          // wird, darum werden die Zielkoordinaten um das halbe Bild
          // verschoben
          dec(xziel, width div 2); //
          dec(yziel, height div 2);
          // Die Zeile ist ein Syntax-Fehler. Zwei Vergleiche so in Folge machen keinen Sinn
          // Hier MUSS etwas fehlen oder falsch übertragen sein
          if left<xziel>= xziel
          else
          if left> xziel then
          repeat
          // Verschieben vom Bild
          left:=left - speed;
          // Neuzeichnen und kurz (100ms) warten
          repaint; sleep (zeit);
          // Schleife in x-Richtung wiederholen, bis Ziel erreicht
          until left <= xziel;
          // FEHLER, so auch nicht möglich
          if top<yziel>= yziel
          else
          if top> yziel then
          repeat
          top:=top - speed;
          // Neuzeichnen und kurz (100ms) warten
          repaint; sleep (zeit);
          // Schleife in y-Richtung wiederholen, bis Ziel erreicht
          until top <= yziel;
          end;

          procedure Register;
          begin
          // Das sorgt nur dafür, dass die Komponente TFigur in der IDE unter
          // Beispiele zu finden sein wird
          RegisterComponents('Beispiele', [TFigur]);
          end;

          end.
          Schöne Grüße, Mario

          Comment


          • #6
            ich und mein Sohn sind dir sehr dankbar.
            Danke

            Comment

            Working...
            X