Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Dualumrechnung macht Probleme
That Guy - Di 02.11.04 17:48
Titel: Dualumrechnung macht Probleme
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 [
http://home.arcor.de/go-tenks/Dual2.rar]
der Quellcode ist sicherlich komplett falsch aber naja ^^
Delphi-Quelltext
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 - Di 02.11.04 18:01
Hier mal nen kleiner anfang
integer in dualzahl umwandlung
Delphi-Quelltext
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 - 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 - Di 02.11.04 18:18
Findest du es nicht ein wenig dreist, darum zu betteln, daß andere deine Hausaufgaben für dich erledigen?
That Guy - 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 :D
st-matze - Mi 03.11.04 10:48
So hier hast du drei funktionen die dir weiter helfen sollten
Delphi-Quelltext
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 - 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 - 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 :twisted:
AXMD
That Guy - Fr 05.11.04 17:56
ohne euch hätt ich aber die basis nich ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!