Delphi-PRAXiS
Seite 2 von 2     12   

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 17: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 17: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 17: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 17:42

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

Poldy 21. Okt 2007 17: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 18: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 15: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 15: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 15: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 15: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]

rawsoul 5. Nov 2007 17:02

Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
 
In der DSDT Library gibt es ein gutes rekursives Beispiel. Wandelt Dezimalzahlen in ein beliebiges Zahlensystem zur Basis X um :)

grenzgaenger 5. Nov 2007 21:50

Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
 
der start des threads ist zwar schon eine weile her, aber wollte noch kurz 'ne kleine anmerkung machen... in TP5.5 sind die befehle SHR und SHL bekannt :-) .

DeddyH 6. Nov 2007 07:14

Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
 
@grenzgaenger: siehe Titel des Threads ;)

Poldy 6. Nov 2007 12:06

Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
 
also irgendwie funktioniert das bei mir immer noch nicht
er erkennt nach wie vor meine variable integer nicht und auch das andere haut noch nicht so wirklich hin :(

[delphi]
type TFormBla = class(TForm)
private
function TFormBla.IntToBin (Sender: TObject);


implementation

var a: Integer;
var b: string ;

begin

a:= strToInt (Edit1.text);
b:='';

while (a>0) do
begin
b:= IntToString (a mod 2) +b
a:= a div 2;
end
Edit2.text = b;
end;

wie kann ich hier eigentlich meinen quellcode reinpacken so das man auch die fehler sieht die er mir anzeigt?

inherited 6. Nov 2007 14:51

Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
 
Garnicht, aber du könntest sie einfach hierher kopieren ;)

Du schreibst 2 mal "var", darfst das aber nur einmal tun! Also
Delphi-Quellcode:
var a: Integer;
  b: String;
Und a und b sind denkbar schlechte Variablennamen, da erkennt man nachher nichtmehr wozu sie eigentlich gut sind!
Nenne sie wenigstens entsprechend ihres Types, also zB "i" und "s", besser noch nach ihrer Funktion im Code!

Poldy 6. Nov 2007 15:48

Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
 
das ich den kopiere ist mir schon klar sieht dann aber so aus wie bei mir oben....

aber eine entscheidene sache habe ich in deinem schon gesehen.. da erkennt er die variable b ja auch nicht als integer... warum zum teufel nicht?

inherited 6. Nov 2007 20:17

Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
 
Häng mal dein komplettes Projekt an, also .pas, .dfm und .dpr

grenzgaenger 6. Nov 2007 22:10

Re: Umrechnen Bin-Dez / Dez-Bin ohne shr oder shl
 
hallo deddy,

fast stimmt der titel, nur die begründung weshalb SHL oder SHR im titel steht... war etwas voreilig. und darauf bezog sich mein kommentar.

dir noch 'n schönen abend.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:01 Uhr.
Seite 2 von 2     12   

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-2025 by Thomas Breitkreuz