Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Interne Zahlendarstellung (https://www.delphipraxis.net/91281-interne-zahlendarstellung.html)

g0dlike87 2. Mai 2007 19:34


Interne Zahlendarstellung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich habe gerade Angefangen mit der Programmierung in Object Pascal in Delphi und haben nun eine Aufgabe bekommen, die ich einfach nicht gelöst bekomme.
Die Aufgabe ist es, die Integerwerte die man in dem einen Feld eintragen kann, ( einmal Integer, einmal Real (Eingabefelder liegen übereinander)), in Hexadezimal und Binär umzuwandeln.
Habe schon nach diversen Sachen gesucht, jedoch komme ich zu keinem richtigen Ansatz.

mkinzler 2. Mai 2007 19:40

Re: Interne Zahlendarstellung
 
Schau dir mal Format() an

g0dlike87 2. Mai 2007 19:45

Re: Interne Zahlendarstellung
 
Was soll ich mir angucken? O.o

mkinzler 2. Mai 2007 19:49

Re: Interne Zahlendarstellung
 
Z.B. in der Delphi-Hilfe
Mit dieser Funktion kann man Hex nach Dez usw umformen.

3_of_8 2. Mai 2007 19:51

Re: Interne Zahlendarstellung
 
Oder einfach Delphi-Referenz durchsuchenIntToHex.

Binärumwandlung geht auch recht einfach, indem du einfach nacheinander alle Bits mit and rauspickst.

Das i-te Bit der Zahl n findest du so raus: (n shr i) and 1

g0dlike87 2. Mai 2007 19:56

Re: Interne Zahlendarstellung
 
Als absoluter Delphi-Neuling ist das einfacher gesagt als getan ;)
Ich habe ja schon ein Problem, weil ich einfach nicht hinbekomme, die Zahles des Eingabefeldes in die vorgegebene Procedure zu packen.
Kann mir jmd bei dem Proggi beim Anfang helfen? Das ich die Zahl im Eingabegeld ausgelesen bekomme und mit der Umrechnung kann?
Und das schierigste wird dann die Umrechnung in Real, mit den IBM und IEEE Standards -.-

DP-Maintenance 2. Mai 2007 22:58

DP-Maintenance
 
Dieses Thema wurde von "Christian Seehase" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Ein delphispezifisches Problem

g0dlike87 3. Mai 2007 18:51

Re: Interne Zahlendarstellung
 
Kann mir niemand nen Tipp geben wie ich die Eingabe aus dem Integerfeld einlese, dann Berechne und wieder ausgebe?

3_of_8 3. Mai 2007 18:58

Re: Interne Zahlendarstellung
 
Delphi-Referenz durchsuchenStrToInt, Delphi-Referenz durchsuchenIntToStr

Lies dir mal das Grundlagen-Tutorial auf dsdt.info durch.

g0dlike87 3. Mai 2007 19:15

Re: Interne Zahlendarstellung
 
Das war mal ein hilfreicher Link, danke ;)
Das Problem ist, wir dürfen dieses IntToHex etc nicht benutzen, sondern müssen es so umständlich machen -.-
Kannste mir denn sagen, wie ich das mache, das ich von dem einen Eingabefeld etwas einlesen möchte und im anderen ausgeben? Finde keine Befehle dafür :(

Apollonius 3. Mai 2007 19:26

Re: Interne Zahlendarstellung
 
Schau dir mal Edit.text an.

g0dlike87 3. Mai 2007 19:35

Re: Interne Zahlendarstellung
 
Wenn du mir sagst wo ich die finde ;)

Svenkan 3. Mai 2007 19:44

Re: Interne Zahlendarstellung
 
Delphi-Quellcode:
edit1.text:=edit2.text
damit der inhalt aus dem feld edit1 nach edit2 kopiert

g0dlike87 3. Mai 2007 19:53

Re: Interne Zahlendarstellung
 
Hmm, wollte aber eigentlich nur Inhalt von Eingabefeld1 einlesen, Sachen verändern und in Eingabefeld2 ausgeben.
Habe nun jeweils die Felder als Variable deklariert und verändert.

Habe ein Prolem bei ein anderen Aufgabe. Es soll ein Timer sein, jedoch komme ich nicht weiter.
Edit1 und Edit2 liegen halt übereinander, damit es für den Anwender nicht sichtbar ist.
Wollte das in Edit1 die Angaben in Minuten gemacht werden, dann Umrechnen in Sekunden, und Restzeit wieder in Minuten und Sekunden ausgeben und wenn es unter 1 Sekunde ist den PC herunterfahren.
Jedoch klappt es als Delphi Neuling überhaupt nicht :D

Delphi-Quellcode:
unit TimerTest;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Button1: TButton;
    Timer: TTimer;
    Edit2: TEdit;
    procedure TimerTimer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.TimerTimer(Sender: TObject);

var x = INTEGER;
x := Edit1;

var y = INTEGER;
y := Edit2;

var sek = INTEGER;
sek := x*60;



begin

sek = sek - 1;
y = sek;

end;

IF y < 1
THEN
    BEGIN
    ExitWindowsEx(EWX_SHUTDOWN,0);
    END
ELSE
    BEGIN
    "Timer nicht ordnungsgemäßg ausgeführt"
    END;
end.

Apollonius 3. Mai 2007 20:03

Re: Interne Zahlendarstellung
 
Das ist wohl superpseudiger Pseudocode. Meinst du nicht, dass du erst einmal eine Einführung zur grundsätzlichen Syntax in Delphi, z.B. die Deklaration von Variablen lesen solltest? Tutorials gibts genug...

g0dlike87 3. Mai 2007 20:06

Re: Interne Zahlendarstellung
 
Joa werd ich mal machen ;)

Svenkan 4. Mai 2007 16:00

Re: Interne Zahlendarstellung
 
Kleiner Tipp zur Variablendeklarierung:

Delphi-Quellcode:
var
sek,x,y: INTEGER;
begin
x:=StrToInt(Edit1.text);
y:=StrToInt(Edit2.text);
sek:=x*60;

inherited 4. Mai 2007 16:03

Re: Interne Zahlendarstellung
 
Variablentypen werden immernoch mit : separiert und String <> Integer ;)

Svenkan 4. Mai 2007 16:08

Re: Interne Zahlendarstellung
 
Das kommt vom Copy+Paste mit einer Priese Aufmerksamkeit..:D
Habs ma berichtigt *g*

Khabarakh 4. Mai 2007 16:17

Re: Interne Zahlendarstellung
 
Eieiei. Gerade bei Code für Anfänger bitte ein wenig auf die Äußerlichkeiten wie Codeeinrückung und Leerzeichen achten. Nur weil man selbst solch unlesbaren Code fabriziert, muss man das noch lange nicht an die nächste Generation weitergeben ;) .

g0dlike87 4. Mai 2007 18:05

Re: Interne Zahlendarstellung
 
Oha danke für die Tipps ;)
Habe das Timerprogramm zwar immernoch nicht zum laufen bekommen aber naja, irgendwann wird es schon klappen.
Bin gerade erstmal dabei die Grundlagen mithilfe eines Buches zu lernen ;)

Hat jmd mal meine Ausgangsprogramm, welches ich als .rar Datei hochgeladen hab angeguckt und kann mir sagen wie man das Umrechnen soll ohne IntToHex etc?

g0dlike87 4. Mai 2007 22:06

Re: Interne Zahlendarstellung
 
Habe mein Timer nochmals überarbeitet, wollte ja so machen das man im Eingabefeld etwas eingibt und die Zahl zählt er dann runter und fährt PC runter wenn es bei 0 ist.
Das hab ich erstmal alles weggelassen und nur eine Variable deklariert, die sich jede Sek um eins verringern soll und dann per Startkopf anfangen soll und in das Label schreiben.
Er kompiliert das Programm auch ohne Fehler, jedoch ist das keine Anwendung oder Quelltext zu sehen, es ist dann plötzlich alles weg, weiß einer die Ursache und kann mir ein Tipp geben wie ich das mit dem Eingabefeld hinbekomme, das er daraus die Zahl einließt?

Delphi-Quellcode:
unit time;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls;

type
  TTIMER = class(TForm)
    TIMER: TLabel;
    Zeit: TLabel;
    Edit: TEdit;
    Restzeit: TLabel;
    Label1: TLabel;
    Start: TButton;
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure StartClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  TIMER: TTIMER;

implementation

{$R *.DFM}

    VAR x : INTEGER;

procedure TTIMER.Timer1Timer(Sender: TObject);


  begin

      x := 5400;
      x := x - 1;

  end;

procedure TTIMER.StartClick(Sender: TObject);
  begin

      Label1.Caption := IntToStr(x);

  end;

end.

Apollonius 5. Mai 2007 09:34

Re: Interne Zahlendarstellung
 
NENN NIEMALS EINE FORMULARKLASSE WIE EINE BEREITS VORHANDENE!!!
Nenn die Formularklasse, die momentan TTimer heißt, einfach mal um (Standard ist ja TForm1). Dann sollte es klappen.

3_of_8 5. Mai 2007 09:37

Re: Interne Zahlendarstellung
 
Und warum schreibst du immer INTEGER? Nach den Code-Conventions dürfte das eher Integer heißen. Sieht auch viel augenfreundlicher aus.

inherited 5. Mai 2007 10:42

Re: Interne Zahlendarstellung
 
Delphi-Quellcode:
procedure TTIMER.Timer1Timer(Sender: TObject);


  begin

      x := 5400;
      x := x - 1;

  end;
Du setzt bei jedem Durchlauf X wiedr auf 5400 um ihm danach eins abzuziehen... deine Variable kommt nie unter 5399

g0dlike87 5. Mai 2007 18:17

Re: Interne Zahlendarstellung
 
Habe den Timer nun nochmal überarbeitet, nun bekomme ich auch eine Ausgabe nur leider noch nicht so ganz richtig :D
Zudem habe ich noch ein Problem, das wenn ich Delphi einmal zu hatte, das Programm dann neustarte und z.B. den Timer weiterbearbeiten möchte und auf Play drücke und davor alles funktionierte immmer Form1 kommt, also eine leere Anwendung wie kommt das?

Kann mir jmd sagen wie ich das mit dem Timer nun hinbekomme, das er nicht wenn ich auf Start drücke eine 0 hinschreiben und nicht weitermacht?
Zudem wollte ich noch eine Abfrage mit IF einbauen wenn die Zeit unter 1 geht, soll PC herunterfahrne geht das?

Delphi-Quellcode:
unit mstimer;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls;

type
  TMS = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Zeit: TEdit;
    Restzeit: TLabel;
    Start: TButton;
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure StartClick(Sender: TObject);
  private

    { Private-Deklarationen }
  public
   x : Integer;

    { Public-Deklarationen }
  end;

var
  MS: TMS;

implementation

{$R *.DFM}

procedure TMS.Timer1Timer(Sender: TObject);

begin

     x := StrToInt(Zeit.Text);
     x := x - 1;


end;

procedure TMS.StartClick(Sender: TObject);

begin

     Restzeit.Caption := IntToStr(x);

end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:30 Uhr.

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