Autor |
Beitrag |
That Guy
Hält's aus hier
Beiträge: 10
|
Verfasst: Di 02.11.04 17:48
Hallo,
wiedereinmal überfordert mich Delphi bzw. mein Lehrer...
daher bitte ich wiedereinmal um eure hilfe ^^" .
In dem Programm wird eine Zahl1 und eine Zahl2 eingegeben, diese werden dann in Dualzahlen umgerechnet. Die beiden DUalzahlen werden dann addiert und das DUal ergebnis muss zurück in eine Dezimalzahl gerechnet werden.
Ihr denkt jetzt sicher warum nicht einfach alles dezimal und dann in DUal, ganz einfach weil mein lehrer das so will -_-"
naja aufjedenfall muss das so funzen (und lasst mich nicht lügen am besten bis donnerstag, spätestens aber nächste woche dienstag ^^")
naja ich hab noch eine schematische darstellung gemacht damit ihr euch das besser vorstellen könnt ^^
wer will kann sich das ganze (unit, formblatt etc.) auch runterladen hier
der Quellcode ist sicherlich komplett falsch aber naja ^^
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) MDezi1: TMemo; MDezi2: TMemo; MDeziErgebnis: TMemo; Label1: TLabel; Label2: TLabel; Label3: TLabel; MDual1: TMemo; MDual2: TMemo; MDualErgebnis: TMemo; Label4: TLabel; BtRech: TButton; BtClear: TButton; Label5: TLabel; Label6: TLabel; procedure BtClearClick(Sender: TObject); procedure BtRechClick(Sender: TObject); private public end;
var Form1:= TForm1;
implementation
{$R *.DFM}
procedure TForm1.BtClearClick(Sender: TObject); begin MDezi1.lines[0] :=''; MDezi2.lines[0] :=''; MDeziErgebnis.lines[0] :=''; MDual1.lines[0] :=''; MDual2.Lines[0] :=''; MDualErgebnis.lines[0] :=''; end;
procedure TForm1.BtRechClick(Sender: TObject); var Dualtext : String; var Zeichen : String; Dezimal : Integer;
begin dezimal := 0; dualtext := MDezi1.lines[0]; Repeat Zeichen := Copy (Dualtext,1,1); Delete (Dualtext,1,1); Dezimal := Dezimal * 2+ StrToInt(Zeichen); Until Dualtext = ' '; MDeziErgebnis.Text := IntToStr(Dezimal); end;
procedure; Var MDezi1, MDezi2, MDeziErgebnis, ubertrag : Integer; Dualtext : String;;
begin Dezi1 := StrToInt(MDezi1.text); dezimalzahl(Dezi1,Dualtext); Mdual1.Text:=Dualtext; Mdezi2:=StrToInt(Mdezi2.Text); Mdual2.Text:=Dualtext; addiere (Mdual1.Text,Mdual2.Text,Dualtext); Mdual3.Text:=Dualtext; DualinDezimal(Dualtext); end; end. |
zu meiner verteidigung hab ich noch zu sagen, dass das nich mein programm ist da meins nicht gespeichert war als der rechner in der schule abgeschmiert ist und dass hier von meinem nachbarn ist der nochweniger plan davon hat als ich ... aufjedenfall wäre eure hilfe für mich wiedereinmal sehr wertvoll 
|
|
st-matze
      
Beiträge: 138
Win 3.11, Win 95, Win 98, Win XP
D7 Ent, D6 Pers, (D5 Pers)
|
Verfasst: Di 02.11.04 18:01
Hier mal nen kleiner anfang
integer in dualzahl umwandlung
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; procedure Edit1Change(Sender: TObject); procedure Edit2Change(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
function inttobit(IN_dec:integer):string; begin Result:=''; while IN_Dec > 0 do begin case (IN_dec mod 2) of 0:Result:='0'+Result; 1:Result:='1'+Result; end; IN_dec:=Round((IN_dec - (IN_dec mod 2))/2); end; end;
procedure TForm1.Edit1Change(Sender: TObject); begin try Edit3.Text:=inttobit(strtoint(Edit1.Text)); except Edit3.Text:=''; end; end;
procedure TForm1.Edit2Change(Sender: TObject); begin try Edit4Text:=inttobit(strtoint(Edit2.text)); except Edit4Text:=''; end; end;
end. |
und nimm doch lieber edit als memo is einfacher
muss jetzt leider wech
vielleicht später mehr
|
|
That Guy 
Hält's aus hier
Beiträge: 10
|
Verfasst: Di 02.11.04 18:10
mein lehrer will das wir memo felder benutzen frag nich warum ... ^^
schopnmal danke für deine mühe, wäre es zu viel verlangt das ganze in etwa so zu schreiben wie ich das oben begonnen hab ? dann ist das ganze für mich als voll depp in sachen delphi einfacher um zu kopieren ^^ oder zieht euch doch das komplette ding und bearbeitet es da ^^, aber trotzdem schonmal danke^^
|
|
tommie-lie
      
Beiträge: 4373
Ubuntu 7.10 "Gutsy Gibbon"
|
Verfasst: Di 02.11.04 18:18
Findest du es nicht ein wenig dreist, darum zu betteln, daß andere deine Hausaufgaben für dich erledigen?
_________________ Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
|
|
That Guy 
Hält's aus hier
Beiträge: 10
|
Verfasst: Di 02.11.04 18:25
nö,
zum einen sind es keine hausaufgaben und zum anderen lasse ich mir lieber von leuten zeigen wie es richtig geht anstatt in der schule ne 5 oder gar 6 dafür zu kassieren, es ist ja nicht so dass ich es nicht selber versuche, wie mein sehr stümperhafter anfang ja beweist, jedoch habe ich mehr davon wenn ich ein funktionsfähiges programm habe und daran dann sehen kann wie es geht, anstatt ein programm das ich selber gemacht habe was nur falsch oder gar nicht geht 
|
|
st-matze
      
Beiträge: 138
Win 3.11, Win 95, Win 98, Win XP
D7 Ent, D6 Pers, (D5 Pers)
|
Verfasst: Mi 03.11.04 10:48
So hier hast du drei funktionen die dir weiter helfen sollten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68:
| function addbin(IN_bin1, IN_bin2:string):string; var bitsum, bitov: char; val1, val2, sum:string; i: integer; begin val1:=''; val2:=''; for i:=Length(IN_bin1) downto 1 do val1:=val1+IN_bin1[i]; for i:=Length(IN_bin2) downto 1 do val2:=val2+IN_bin2[i]; if Length(IN_bin1) < Length(IN_bin2) then for i:=Length(IN_bin1)+1 to Length(IN_bin2) do val1:=val1+'0' else for i:=Length(IN_bin2)+1 to Length(IN_bin1) do val2:=val2+'0'; sum:=''; bitov:='0'; for i:=1 to Length(val1) do begin bitsum := chr(((ord(bitov)-Ord('0'))+(Ord(val1[i])-Ord('0')) + (Ord(val2[i])-Ord('0'))) mod 2 + Ord('0')); bitov := chr(((ord(bitov)-Ord('0'))+(Ord(val1[i])-Ord('0')) + (Ord(val2[i])-Ord('0'))) div 2 + Ord('0')); sum := sum + bitsum; end; if bitov = '1' then sum:=sum + bitov; Result:=''; for i:=Length(sum) downto 1 do Result:=Result + sum[i]; end;
function dec2bin(IN_dec:integer):string; begin if IN_dec = 0 then Result:='0' else begin Result:=''; while IN_Dec > 0 do begin case (IN_dec mod 2) of 0:Result:='0'+Result; 1:Result:='1'+Result; end; IN_dec:=Round((IN_dec - (IN_dec mod 2))/2); end; end; end;
function bin2dec(IN_bin:string):integer; var i,mul:integer; begin Result:=0; i:=Length(IN_bin); mul:=1; while i > 0 do begin if IsDelimiter('1',IN_bin,i) then Result:= Result + mul; Dec(i); mul:=mul*2; end; end; |
Für dein Memo solltest du
Memo.Clear; anstatt Memo.Lines[0]:='' verwenden
und
Memo.Text enthält alle Linien auf einmal, falls auch mal mehr als nur eine Zeile drin steht.
verwendung der Funktionen is irgendwie so:
Memobin.text := dec2bin(Memodec.text);
Memobinsum.text := addbin(memobin1.text,memobin2.text);
memodecsum.text := inttostr(bin2dec(Memobinsum.text));
bitte beachte, dass hier noch keine fehlerhaften eingaben abgefangen werden.
Deinen Lehrer kannst ja mal fragen, was der quatsch mit dem Memo überhaupt soll. Edit ist hier meiner meinung nach besser angebracht
|
|
That Guy 
Hält's aus hier
Beiträge: 10
|
Verfasst: Do 04.11.04 21:48
vielen dank ^^
ich werd mich dann mals ans umschreiben machen ^^, so wie es da steht nimmt mir mein lehrer das auf keinen fall ab *g*
aber vielen dank schonmal, was würd ich nur ohne euch machen ^^
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Do 04.11.04 21:56
That Guy hat folgendes geschrieben: | was würd ich nur ohne euch machen ^^ |
Das selbe, was du jetzt auch machst: Code umschreiben
AXMD
|
|
That Guy 
Hält's aus hier
Beiträge: 10
|
Verfasst: Fr 05.11.04 17:56
ohne euch hätt ich aber die basis nich 
|
|
|