|
Registriert seit: 19. Nov 2006 29 Beiträge |
#1
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 = '2' then Basis := B2; if B = '10' then Basis := B10; if B = '16' then 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] = '1' Then 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 |
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs 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
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |