Delphi-PRAXiS
Seite 2 von 4     12 34   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Umrechnen von Zahlensystemen (https://www.delphipraxis.net/162536-umrechnen-von-zahlensystemen.html)

JP29 27. Aug 2011 21:26

AW: Umrechnen von Zahlensystemen
 
Zitat:

Zitat von himitsu (Beitrag 1119924)

Tipp 2: Im Debugger kann man sich die Werte seiner Variablen ansehn und so erkennen was wie wo (falsch) läuft.

wie kommt man in den debugger??

JP29 27. Aug 2011 21:35

AW: Umrechnen von Zahlensystemen
 
ok war n dummer fehler, ich hatte nicht x dem edit 1 zugewiesen, aber er rechnet immer noch nicht ganz richtig:
12 sind jetzt 0110 statt 0011.
und 0110 sind nur 6...aber ich erkenne en fehler nicht.
bitte hilfe.

himitsu 27. Aug 2011 21:49

AW: Umrechnen von Zahlensystemen
 
Bitte editiere deine Beiträge, wenn du kurz hintereinander mehreres sagen willst. (Mehrfachposts sind nicht so gerne gesehn)

Und zum Debugger: schau dir mal das Menü "Start" genauer an.

Ich weiß jetzt nicht genau, was alles schon in D6 möglich war, aber


z.B. auf die erste Zeile deiner Prozedur gehen und F5 drücken (Haltepunkt setzen)
dann mit F9 das Programm starten
mit F7 / F8 kann man dann einzelne Zeilen/Befehle ausführen

Mit der Maus über eine Variable zeigen und dann zeigt Delphi einem den Wert an
und eventuell gibt es unter Ansicht > Debugfenster auch sowas wie Überwachte Ausdrücke, wo man den Namen einer Variable eintragen und sich deren Wert anzeigen kann.
Auch versteckt sich vermutlich im Kontextmenü des Codefensters einige schöne Einträge zum Anzeigen/ändern von Werten.

JP29 28. Aug 2011 09:45

AW: Umrechnen von Zahlensystemen
 
mhhh naja, aber ich würd gern mal wissen warum er falsch rechnet, eigentlich stimmt doch die syntax

edit:
hab jetztnoch was entdeckt:
er versetzt immer eine null an die falsche stelle:
50 wären ja: 110010
programm rechnet: 011001
genau wie bei 12
12 wären: 1100
programm rechnet:0110

habt ihr vlt. ne idee woran das liegen könne!?

DeddyH 28. Aug 2011 10:23

AW: Umrechnen von Zahlensystemen
 
Du merkst Dir den Wert des niederwertigsten Bits nicht, sondern dividierst sofort durch 2.

JP29 28. Aug 2011 10:35

AW: Umrechnen von Zahlensystemen
 
ok, das versteh ich nicht so richtig,
könntest du mir das genauer erklären.
danke

Aphton 28. Aug 2011 11:01

AW: Umrechnen von Zahlensystemen
 
Das allererste, was du machst, ist, durch zwei zu dividieren. Dadurch verlierst du schon ein "y" Wert.
Dh. du musst die Reihenfolge vertauschen:
y := x mod 2
x := x div 2

Edit
Zitat:

Zitat von himitsu
Insert und fügst das c hinten ein.

hinten? Ach du hast es dir echt damit angetan...
Diesmal muss es aber vorne dran:
denn du müsstest folgendes aussagen, anstatt dieses
Zitat:

Zitat von JP29
12 sind jetzt 0110 statt 0011.

12 sind jetzt 0110 statt 1100.

JP29 28. Aug 2011 11:10

AW: Umrechnen von Zahlensystemen
 
ja jetzt funktioniert es,
vielen dank an alle von euch, dass ihr mir so geholfen habt.

Jetzt habe ich allerdings noch ein Problem beim umrechnen von binaer zu dezimal, und zwar rechnet er hier auch nicht richtig.
Könntet ihr mal bitte einen blick drauf werfen:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var n, result, y: Integer;
    x, s1, s2, s3, s4: String;
begin
 x:=(edit1.Text);
 n:=Length(x);
  if n=1 then
   begin
    y:=StrToInt(edit1.Text);
    result:=y*1;
    edit2.Text:=IntToStr(result);
   end;
  if n=2 then
   begin
    s1:=copy(x,2,2);
    s2:=copy(x,1,1);
    result:= StrToInt(s1)*1 + StrToInt(s2)*2;
    edit2.Text:=IntToStr(result);
   end;
  if n=3 then
   begin
    s1:=copy(x,3,3);
    s2:=copy(x,2,2);
    s3:=copy(x,1,1);
    result:= StrToInt(s1)*1 + StrToInt(s2)*2 + StrToInt(s3)*4;
    edit2.text:=IntToStr(result);
   end;
  if n=4 then
   begin
    s1:=copy(x,4,4);
    s2:=copy(x,3,3);
    s3:=copy(x,2,2);
    s4:=copy(x,1,1);
    result:= StrToInt(s1)*1 + StrToInt(s2)*2 + StrToInt(s3)*4 + StrToInt(s4)*8;
    edit2.Text:=IntToStr(result);
   end;
  if n>4 then
   begin
    showmessage('Es können nur Zahlen mit max 4 Stellenumgerechnet werden.');
   end;


end;

oder habt ihr vlt einde idee, wie man das in einer schleife umsetzen kann, ohne diese if-Verschachtelung.

danke schon mal im vorraus.

Aphton 28. Aug 2011 12:04

AW: Umrechnen von Zahlensystemen
 
Du weist nirgendswo Werte den s1, .., s4 Variablen zu!

Mit ner Schleife ginge es evt. so (sollte auch für dich verständlich sein)
Delphi-Quellcode:
var
  binStr : String;
  binVal : Integer;
  decVal : Integer;
  i     : Integer;
begin
  binStr := edit1.Text;
  decVal := 0;
  binVal := 1;
  for i := Length(binStr) downto 1 do
  begin
    if binStr[i] = '1' then
      decVal := decVal + binVal;
    binVal := binVal * 2;
  end;
  edit2.Text := IntToStr(decVal);
end;

Bjoerk 28. Aug 2011 12:10

AW: Umrechnen von Zahlensystemen
 
Beitrag gecancelt, hatte die Frage falsch verstanden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:26 Uhr.
Seite 2 von 4     12 34   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz