![]() |
Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
erstmal schon mal recht herzlichen dank für die lösung.... jetzt habe ich zu dieser aber noch ganz viele blöde anfängerfragen ;)
zum einen vermisse ich hier eine variable von typ int... muss ja einen eingabewert machen.... wen ich jetzt zum beispiel die 120 umwandeln möchte brauche ich doch eine variable der ich diese 120 zuordnen kann oder? dann verstehe ich leider immer noch nicht was dieses cardinal ist :wall: und wieso muss ich am ende die vergleichszahl verdoppeln? :gruebel: function ZahlAsBinaryString(Zahl: Cardinal): String; //Variable Vergleichszahl deklarieren var Vergleichszahl: Cardinal; begin //Vergleichszahl und Rückgabewert vorbelegen Vergleichszahl := 1; Result := ''; //Schleife (Ende, wenn das Ergebnis 32 Stellen hat) while Length(Result) < SizeOf(Cardinal) * 8 do begin //binärer Vergleich if (Zahl and Vergleichszahl) = Vergleichszahl then Result := '1' + Result else Result := '0' + Result; //Vergleichszahl verdoppeln Vergleichszahl := Vergleichszahl * 2; end; end; |
Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
Cardinal ist eine ganze Zahl ohne Vorzeichen (also immer positiv). Sie ist 32 Bit breit. Markier mal das Wort "Cardinal" und drück F1 ;). Und die Vergleichszahl musst Du verdoppeln, um das nächsthöhere Bit zu vergleichen (die Werte von Bits verdoppeln sich nun mal von rechts nach links).
|
Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
dann ist also die cardinalzahl meine eingabevariable? zum beispiel meine 120?
|
Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
100 Punkte! :zwinker:
|
Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
hmm.. je mehr ich darüber nachdenke.... umso blöder werde ich glaube ich :freak:
ich setzte ja die variable vergleichszahl.. das ist ja ein cardinal und die zahl die ich ins binäre umgewandelt haben möchte als nächstes belegst du vergleichszahl und rückgabewert... ich vermute mal das der rückgabewert auch eine variable ist.. die wurde vorher aber doch garnicht deklariert oder? und bereitet mir kopfschmerzen das ich immer noch nicht ganz verstehe wo dann die eigentlich umwandlung stattfindet.. auf einen zettel kann ich das auch ohne probleme umwandeln und ich verstehe auch die bedingungen aber wenn ich die 2 werte vergleiche dann habe ich die doch schon umgewandelt oder? ist es irgendwie möglich das ganze anhand eines beispiels zu zeigen? mit der zahl 120 oder so? |
Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
1. Jede Funktion hat unter Delphi automatisch die Variable Result, die den Rückgabewert aufnimmt.
2. Schau Dir Beitrag #32 nochmal an, da hab ich das IMHO recht anschaulich gezeigt (mit der Zahl 125, aber ist ja wurscht). |
Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
habe da nochmal ne nachfrage, nachdem ich eine andere hasuarbeit fertig habe und mich nun wieder mit delphi beschäftige mal wieder auf probleme gestossen...
hoffe ihr könnt mir bei meinen blöden fragen ein wenig helfen ;) mein quellcode sieht wie folgt aus... function IntToBin (Sender: TObject); var a: int; var b: string; begin a:= strToInt (Edit1.text); b:= ''; while (a>0) do begin b:= IntToString (a mod2) +b a:= a div 2; end Edit2.text = b; end der quellcode ansich und auch die logig leuchtet mir soweit ein.. was ich wiederrum nicht verstehe ist warum er meine var a und mein Edit2 nicht kennt... |
Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
Benutz doch bitte die Delphi-Tags, dann kann man es leichter lesen.
Dein a kennt er nicht, weil er den Typ Int nicht kennt. Der heisst in Delphi Integer. Und dein Edit2 kennt er nicht weil das Teil deiner Form-Klasse ist, deine Funktion aber nicht. Im Übrigen ist der Sender-Parameter hier überflüssig. |
Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
ob ich da Int oder Integer schreibe interessiert ihn nicht wirklich... erkennen will er es trotzdem nicht :(
und wie bringe ich ihn dazu das er mein Edit2 kennt? |
Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
Delphi-Quellcode:
[edit] Aber so würde ich es nicht machen. Wenn Du die Funktion allgemeiner hältst, ist sie wiederverwendbar. [/edit]
type TFormBla = class(TForm)
... private function IntToBin (Sender: TObject); ... implementation function TFormBla.IntToBin (Sender: TObject); begin //jetzt kennt die Funktion auch Edit1 usw. ... end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz