AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Brauche Erklärung für Parameterübergabe (zwecks Klausur Di)
Thema durchsuchen
Ansicht
Themen-Optionen

Brauche Erklärung für Parameterübergabe (zwecks Klausur Di)

Ein Thema von lun87 · begonnen am 26. Nov 2006 · letzter Beitrag vom 27. Nov 2006
Antwort Antwort
lun87

Registriert seit: 19. Nov 2006
29 Beiträge
 
#1

Brauche Erklärung für Parameterübergabe (zwecks Klausur Di)

  Alt 26. Nov 2006, 20:20
Hi an alle erstmal
Ich wollte euch mal fragen, ob mir wer eine kleine Zeile aus dem Programm meines Lehrers erklären kann. Ich kann nicht nachvollziehen was dort passiert. Wäre echt nett

hier der code:

Delphi-Quellcode:
unit UZahlensysteme;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, UZahl;

type
  TForm1 = class(TForm)
    RadioGroupEingabeBasis: TRadioGroup;
    RadioGroupAusgabeBasis: TRadioGroup;
    eeingabe: TEdit;
    eausgabe: TEdit;
    procedure RadioGroupEingabeBasisClick(Sender: TObject);
    procedure RadioGroupAusgabeBasisClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
   number : TZahl;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.RadioGroupEingabeBasisClick(Sender: TObject);
begin
  Case RadioGroupEingabeBasis.ItemIndex of
    0: number.setBasis ('2');
    1: number.setBasis ('10');
    2: number.setBasis ('16');
  end;
  number.setZahl (eeingabe.text);
end;

procedure TForm1.RadioGroupAusgabeBasisClick(Sender: TObject);
begin
  Case RadioGroupAusgabeBasis.ItemIndex of
    0: number.setBasis ('2');
    1: number.setBasis ('10');
    2: number.setBasis ('16');
  end;
  eausgabe.text := number.getZahl;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
number := TZahl.create;
end;

end.

unit UZahl;

interface

Type
  TBasen = (B2, B10, B16);
  TZahl = class
protected
  Basis : TBasen;
  WertBasis10 : integer;
public
  procedure setBasis (B : string);
  function getBasis : string;
  procedure setZahl (Z : string);
  function getZahl : string;
end;

implementation
uses ZahlKonv, SysUtils;

procedure TZahl.setBasis (B : string);
begin
 if B = '2then Basis := B2;
 if B = '10then Basis := B10;
 if B = '16then Basis := B16;
end;

procedure TZahl.setZahl (Z : string);
begin
  Case Basis of
    B2: dual_nach_dezimal (Z, Wertbasis10); ----->[color=#ff0000]Was wird hier wem zugeordnet? Was macht Wertebasis10 und was ... macht Z ? Könnt ihr mir dort helfen? Danke :)[/color]
    B10: Wertbasis10 := StrToInt(Z);
    B16: sedezimal_nach_dezimal (Z, Wertbasis10);
  end;
end;

function TZahl.getBasis : string;
begin
  Case Basis of
    B2 : result := '2';
    B10 : result := '10';
    B16 : result := '16';
  end;
end;

function TZahl.getZahl : string;
var puffer : string;
begin
  puffer := '';
  Case Basis of
    B2: Begin
          dezimal_nach_dual (Wertbasis10, puffer);
          result := puffer;
        end;
    B10: result := IntToStr(Wertbasis10);
    B16: begin
           dezimal_nach_sedezimal(Wertbasis10, puffer);
           result := puffer;
         end;
  end;
end;

end.

Unit ZahlKonv;

{ OSZ Energietechnik I,
  Fb Informatik,
  Christian Steinbrucker,
  2001, siehe alte Version von 1996 noch ohne Type STRING
}


Interface

Procedure dezimal_nach_dual ( DezZahl : Integer;
                                  Var DualZahl: String);
Procedure dezimal_nach_sedezimal ( DezZahl : Integer;
                                  Var SedZahl : String);
Procedure sedezimal_nach_dezimal ( SedZahl : String;
                                  Var DezZahl : Integer);
Procedure dual_nach_dezimal ( DualZahl: String;
                                  Var DezZahl : Integer);

Implementation { ========================================================== }
Uses SysUtils, UZahlensysteme;
{ ----------------------------- private Operationen ----------------------- }

Function Potenz ( Basis, Exponent : Integer ) : Integer;
Var Zaehler, Ergebnis : Integer;
Begin
  Ergebnis := 1;
  For Zaehler := 1 TO Exponent DO
    Ergebnis := Ergebnis * Basis;
  Potenz := Ergebnis;
End;

Procedure Zahl_traversieren ( Zahlin: String;
                                 Var Zahlout: String);
Var Stelle,
    Laenge: Integer;
Begin
  Laenge := Length(ZahlIn);
  For Stelle := 0 To Laenge Do
    ZahlOut [Stelle] := ZahlIn [Laenge - Stelle];
End;

{ ------------------------- öffentliche Operationen ----------------------- }

Procedure dezimal_nach_dual ( DezZahl : Integer;
                             Var DualZahl: String);
Var DualZaehler: Byte;
    S: string [1];
Begin
  DualZahl := '0000000000000000';
  DualZaehler := 0;
  While DezZahl > 0 Do
    Begin
      DualZaehler := DualZaehler + 1;
      Str(DezZahl Mod 2, S);
      DualZahl [DualZaehler] := S[1];
      DezZahl := DezZahl Div 2;
    End;
  Zahl_traversieren (DualZahl, DualZahl);
End;

Procedure dezimal_nach_sedezimal ( DezZahl: Integer;
                                  Var SedZahl: String);
Var DezZaehler : Integer;
Begin
  DezZaehler := 0;
  Sedzahl:=' ';
  While (Dezzahl > 0) Do
    Begin
      DezZaehler := DezZaehler + 1;
      Case DezZahl Mod 16 Of
        0: Sedzahl [DezZaehler] := '0';
        1: Sedzahl [DezZaehler] := '1';
        2: Sedzahl [DezZaehler] := '2';
        3: Sedzahl [DezZaehler] := '3';
        4: Sedzahl [DezZaehler] := '4';
        5: Sedzahl [DezZaehler] := '5';
        6: Sedzahl [DezZaehler] := '6';
        7: Sedzahl [DezZaehler] := '7';
        8: Sedzahl [DezZaehler] := '8';
        9: Sedzahl [DezZaehler] := '9';
        10: Sedzahl [DezZaehler] := 'A';
        11: Sedzahl [DezZaehler] := 'B';
        12: Sedzahl [DezZaehler] := 'C';
        13: Sedzahl [DezZaehler] := 'D';
        14: Sedzahl [DezZaehler] := 'E';
        15: Sedzahl [DezZaehler] := 'F';
      End;
      DezZahl := DezZahl Div 16;
    End;
  Zahl_traversieren (SedZahl, SedZahl);
End;

Procedure sedezimal_nach_dezimal ( SedZahl: String;
                                  Var DezZahl: Integer);
Const Basis = 16;
Var Exponent: Integer;
      laenge : Integer;
Begin
  DezZahl := 0;
  laenge := Length(SedZahl);
  For Exponent := 0 TO 3 Do
    CASE SedZahl [ laenge - Exponent ] OF
      '0': DezZahl := DezZahl + 0 * Potenz (Basis, Exponent);
      '1': DezZahl := DezZahl + 1 * Potenz (Basis, Exponent);
      '2': DezZahl := DezZahl + 2 * Potenz (Basis, Exponent);
      '3': DezZahl := DezZahl + 3 * Potenz (Basis, Exponent);
      '4': DezZahl := DezZahl + 4 * Potenz (Basis, Exponent);
      '5': DezZahl := DezZahl + 5 * Potenz (Basis, Exponent);
      '6': DezZahl := DezZahl + 6 * Potenz (Basis, Exponent);
      '7': DezZahl := DezZahl + 7 * Potenz (Basis, Exponent);
      '8': DezZahl := DezZahl + 8 * Potenz (Basis, Exponent);
      '9': DezZahl := DezZahl + 9 * Potenz (Basis, Exponent);
      'A': DezZahl := DezZahl + 10 * Potenz (Basis, Exponent);
      'B': DezZahl := DezZahl + 11 * Potenz (Basis, Exponent);
      'C': DezZahl := DezZahl + 12 * Potenz (Basis, Exponent);
      'D': DezZahl := DezZahl + 13 * Potenz (Basis, Exponent);
      'E': DezZahl := DezZahl + 14 * Potenz (Basis, Exponent);
      'F': DezZahl := DezZahl + 15 * Potenz (Basis, Exponent);
      'a': DezZahl := DezZahl + 10 * Potenz (Basis, Exponent);
      'b': DezZahl := DezZahl + 11 * Potenz (Basis, Exponent);
      'c': DezZahl := DezZahl + 12 * Potenz (Basis, Exponent);
      'd': DezZahl := DezZahl + 13 * Potenz (Basis, Exponent);
      'e': DezZahl := DezZahl + 14 * Potenz (Basis, Exponent);
      'f': DezZahl := DezZahl + 15 * Potenz (Basis, Exponent);
    End;
End;

Procedure dual_nach_dezimal ( DualZahl: String;
                             Var DezZahl : Integer);
Var Exponent,
    laenge : Integer;
Begin
  DezZahl := 0;
  laenge := length(Dualzahl);
    For Exponent := 0 To 15 Do
      If DualZahl [laenge - Exponent] = '1Then
        DezZahl := DezZahl + Potenz (2, Exponent);
End;

Begin

End.

Entschuldigt aber ich weiss nicht wie man das in rot schreibt und wie ich es besser einrücken kann.

mfg
Lun87
  Mit Zitat antworten Zitat
fwsp
(Gast)

n/a Beiträge
 
#2

Re: Brauche Erklärung für Parameterübergabe (zwecks Klausur

  Alt 26. Nov 2006, 20:27
du hättest alternativ auch einfach die zeile angeben können...
icn der zeile 88 wir die prozedur dual_nach_dezimal (Z, Wertbasis10);
was genau verstehst du denn nicht?
  Mit Zitat antworten Zitat
lun87

Registriert seit: 19. Nov 2006
29 Beiträge
 
#3

Re: Brauche Erklärung für Parameterübergabe (zwecks Klausur

  Alt 26. Nov 2006, 20:33
Mein Problem ist, was tut er mit beiden Parametern? Warum Wertebasis10? Bearbeitet er die Parameter beide gleichzeitig oder nacheinander? Was geschieht also wenn diese Function aufgerufen wird? Hätte Z nicht gereicht?

Mfg
Lun87
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Brauche Erklärung für Parameterübergabe (zwecks Klausur

  Alt 26. Nov 2006, 20:36
Schau dir doch einfach die aufgerufende Prozedur in Zeile 254 an
Markus Kinzler
  Mit Zitat antworten Zitat
fwsp
(Gast)

n/a Beiträge
 
#5

Re: Brauche Erklärung für Parameterübergabe (zwecks Klausur

  Alt 26. Nov 2006, 20:42
in Z steht die zuverarbeitende information. in WertBasis10 (Wert zur Basis 10) wird das resultat zurückgeliefert. dafür auch das var davor. wenn der wert innerhalb der methode verändert wird, wir die veränderung auch wieder zurückgegeben.
  Mit Zitat antworten Zitat
lun87

Registriert seit: 19. Nov 2006
29 Beiträge
 
#6

Re: Brauche Erklärung für Parameterübergabe (zwecks Klausur)

  Alt 26. Nov 2006, 22:08
Also kann man sagen das die letzte Variable in solchen (var bla, blub : real); Zeilen die "ergebnis" variable ist ? oder ist das irgendwo festgelegt?

Wie habt ihr das mit der Zeilenangabe angefügt? Woher wisst ihr die Zeilen?


Also ist das so oder : also ist das eine der aufruf der function, mit dem parameter z = zahl ? (aus editkomponente) und wertbasis10 das ergebnis in dem fall, also wird das ergebnis in der function in wertbasis10 gespeichert?!


mfg
Lun87
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Brauche Erklärung für Parameterübergabe (zwecks Klausur

  Alt 26. Nov 2006, 22:12
Man sieht das, wie scon erwähnt an dem var. Dieses Bewirkt das die Variable als Referenz(Zeiger) übergeben wird und Änderungen dann auch auf die übergebene Variable wirken.
Markus Kinzler
  Mit Zitat antworten Zitat
fwsp
(Gast)

n/a Beiträge
 
#8

Re: Brauche Erklärung für Parameterübergabe (zwecks Klausur

  Alt 26. Nov 2006, 22:28
die zeilennummern stehen doch in dem code-block.
  Mit Zitat antworten Zitat
lun87

Registriert seit: 19. Nov 2006
29 Beiträge
 
#9

Re: Brauche Erklärung für Parameterübergabe (zwecks Klausur

  Alt 26. Nov 2006, 22:30
Ja super, die stehen da wenn ich nicht eingeloggt bin in dem Forum... hehe man lernt dazu^^ Danke

Mfg
Lun87
  Mit Zitat antworten Zitat
Hobby-Programmierer

Registriert seit: 19. Jan 2006
Ort: München
392 Beiträge
 
Delphi XE Starter
 
#10

Re: Brauche Erklärung für Parameterübergabe (zwecks Klausur

  Alt 27. Nov 2006, 03:57
Zitat von lun87:
Ja super, die stehen da wenn ich nicht eingeloggt bin in dem Forum
Oder aber man schaut mal in sein 'erw. Profil bearbeiten' rein ...

LG Mario
Mario
'Lesen Sie schnell, denn nichts ist beständiger als der Wandel im Internet!'
  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 09:03 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