![]() |
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. |
Re: Interne Zahlendarstellung
Schau dir mal Format() an
|
Re: Interne Zahlendarstellung
Was soll ich mir angucken? O.o
|
Re: Interne Zahlendarstellung
Z.B. in der Delphi-Hilfe
Mit dieser Funktion kann man Hex nach Dez usw umformen. |
Re: Interne Zahlendarstellung
Oder einfach
![]() 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 |
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
Dieses Thema wurde von "Christian Seehase" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Ein delphispezifisches Problem |
Re: Interne Zahlendarstellung
Kann mir niemand nen Tipp geben wie ich die Eingabe aus dem Integerfeld einlese, dann Berechne und wieder ausgebe?
|
Re: Interne Zahlendarstellung
|
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 :( |
Re: Interne Zahlendarstellung
Schau dir mal Edit.text an.
|
Re: Interne Zahlendarstellung
Wenn du mir sagst wo ich die finde ;)
|
Re: Interne Zahlendarstellung
Delphi-Quellcode:
damit der inhalt aus dem feld edit1 nach edit2 kopiert
edit1.text:=edit2.text
|
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. |
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...
|
Re: Interne Zahlendarstellung
Joa werd ich mal machen ;)
|
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; |
Re: Interne Zahlendarstellung
Variablentypen werden immernoch mit : separiert und String <> Integer ;)
|
Re: Interne Zahlendarstellung
Das kommt vom Copy+Paste mit einer Priese Aufmerksamkeit..:D
Habs ma berichtigt *g* |
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 ;) .
|
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? |
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. |
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. |
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.
|
Re: Interne Zahlendarstellung
Delphi-Quellcode:
Du setzt bei jedem Durchlauf X wiedr auf 5400 um ihm danach eins abzuziehen... deine Variable kommt nie unter 5399
procedure TTIMER.Timer1Timer(Sender: TObject);
begin x := 5400; x := x - 1; end; |
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 22:56 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-2025 by Thomas Breitkreuz