Delphi-PRAXiS
Seite 5 von 6   « Erste     345 6      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl (https://www.delphipraxis.net/8519-umrechnen-bin-dez-dez-bin-ohne-shr-oder-shl.html)

Poldy 21. Okt 2007 18:22

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;

DeddyH 21. Okt 2007 18:26

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).

Poldy 21. Okt 2007 18:40

Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
 
dann ist also die cardinalzahl meine eingabevariable? zum beispiel meine 120?

DeddyH 21. Okt 2007 18:42

Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
 
100 Punkte! :zwinker:

Poldy 21. Okt 2007 18:56

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?

DeddyH 21. Okt 2007 19:02

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).

Poldy 5. Nov 2007 16:22

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...

inherited 5. Nov 2007 16:24

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.

Poldy 5. Nov 2007 16:47

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?

DeddyH 5. Nov 2007 16:51

Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
 
Delphi-Quellcode:
type TFormBla = class(TForm)
...
private
  function IntToBin (Sender: TObject);
...

implementation

function TFormBla.IntToBin (Sender: TObject);
begin
  //jetzt kennt die Funktion auch Edit1 usw.
  ...
end;
[edit] Aber so würde ich es nicht machen. Wenn Du die Funktion allgemeiner hältst, ist sie wiederverwendbar. [/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 Uhr.
Seite 5 von 6   « Erste     345 6      

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