| Autor | Beitrag | 
| bavci Hält's aus hier
 Beiträge: 12
 
 
 
 
 | 
Verfasst: Fr 18.03.05 20:43 
 
ich habe eine Variable j, deren Wert als Integer vorliegt. Jetzt möchte ich sie in das Hex-Format konvertieren, aber mit inttohex habe ich probleme. Dort muss ich ja nen speziellen Wert angeben, aber ich will/muss das irgendwie als "j" unterbringen !? | 
|  | 
| delfiphan 
          Beiträge: 2684
 Erhaltene Danke: 32
 
 
 
 
 | 
Verfasst: Fr 18.03.05 20:48 
 
  Probier mal inttohex(j,8) . | 
|  | 
| raziel 
          Beiträge: 2453
 
 Arch Linux
 JS (WebStorm), C#, C++/CLI, C++ (VS2013)
 
 | 
Verfasst: Fr 18.03.05 20:48 
 
Hallo und    im DF,
 könntest Du Deine Frage ein bisschen präzisieren? Du willst ein Integer j  Hexadezimal darstellen lassen: Label1.Caption := IntToHex(j, 8); Wo genau liegt jetzt das Problem?
 Gruß,
 raziel_________________JSXGraph | 
|  | 
| Popov 
          Beiträge: 1655
 Erhaltene Danke: 13
 
 WinXP Prof.
 Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
 
 | 
Verfasst: Fr 18.03.05 21:14 
 | 
|  | 
| bavci  Hält's aus hier
 Beiträge: 12
 
 
 
 
 | 
Verfasst: Fr 18.03.05 21:14 
 
das Problem liegt darin, dass genau das nicht geht. Wenn ich anstelle j eine Zahl einsetze, dann geht es. Aber da j jedesmal nen anderen Wert hat, darf ich dort keinen festen Wert hinschreiben...........
 Bekomme beim compilen den Fehler:
 "Es gibt keine überladene Version von 'IntToHex', die man mit diesen Argumenten aufrufen kann".
 
 Bin noch Anfänger, habe erst heute mit Delphi angefangen. Bin aber schon weit gekommen für den ersten Tag. Habe davor mehr mit C probiert...........
 | 
|  | 
| delfiphan 
          Beiträge: 2684
 Erhaltene Danke: 32
 
 
 
 
 | 
Verfasst: Fr 18.03.05 21:18 
 
Poste doch mal einige Zeilen deines Quellcodes, dann werden wir das Problem sicher bald finden. | 
|  | 
| bavci  Hält's aus hier
 Beiträge: 12
 
 
 
 
 | 
Verfasst: Fr 18.03.05 21:30 
 
es handelt sich um ne Uhrzeitumrechnung, für ein bestimmtes Gerät (Hex-Uhrzeit => Normale Uhrzeit funktioniert. Nur für das umgekehrt habe ich das genannte problem):
 			Moderiert von									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 33:
 34:
 35:
 36:
 37:
 38:
 39:
 40:
 41:
 42:
 43:
 44:
 45:
 46:
 47:
 48:
 49:
 50:
 51:
 52:
 53:
 54:
 55:
 56:
 57:
 58:
 59:
 60:
 61:
 62:
 63:
 64:
 65:
 
 | unit Unit1;
 interface
 
 uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls;
 
 type
 TForm1 = class(TForm)
 Hextime: TEdit;
 Label1: TLabel;
 Label2: TLabel;
 h: TEdit;
 Label3: TLabel;
 min: TEdit;
 Label4: TLabel;
 sek: TEdit;
 Button1: TButton;
 Button2: TButton;
 procedure Button1Click(Sender: TObject);
 procedure Button2Click(Sender: TObject);
 private
 
 public
 
 end;
 
 var
 Form1: TForm1;
 
 implementation
 
 {$R *.DFM}
 
 var
 a,k: String;
 b: integer;
 c,d,e,f,g,i,j: real;
 
 procedure TForm1.Button1Click(Sender: TObject);
 begin
 a:=Hextime.text;
 b:=strtoint('$'+a);
 c:=b*2/3600 - b*2 mod 3600/3600;
 d:=b*2 mod 3600 / 60 - b*2 mod 3600 mod 60 /60;
 e:=b*2 mod 3600 mod 60;
 h.text:=floattostr(c);
 min.text:=floattostr(d);
 sek.text:=floattostr(e);
 
 end;
 
 
 procedure TForm1.Button2Click(Sender: TObject);
 begin
 f:=(strtoint(h.text))*3600;
 g:=(strtoint(min.text))*60;
 i:=(strtoint(sek.text));
 j:=(f+g+i)/2;
 k:=intToHex(j,8);
 
 end;
 
 end.
 |   UGrohne: Code- durch Delphi-Tags ersetzt. | 
|  | 
| bavci  Hält's aus hier
 Beiträge: 12
 
 
 
 
 | 
Verfasst: Fr 18.03.05 21:31 
 
Das Problem liegt in der 2.ten funktion (Button2).......... | 
|  | 
| delfiphan 
          Beiträge: 2684
 Erhaltene Danke: 32
 
 
 
 
 | 
Verfasst: Fr 18.03.05 21:32 
 
 j  ist bei dir kein Integer , sondern ein real . Das ist ne Gleitkommazahl, die du vor dem Konvertieren runden musst. | 
|  | 
| bavci  Hält's aus hier
 Beiträge: 12
 
 
 
 
 | 
Verfasst: Fr 18.03.05 21:37 
 
und wie runde ich die !? Denn die Zahl hat nie kommastellen.............. 
 Zuletzt bearbeitet von bavci am Fr 18.03.05 21:38, insgesamt 1-mal bearbeitet
 | 
|  | 
| delfiphan 
          Beiträge: 2684
 Erhaltene Danke: 32
 
 
 
 
 | 
Verfasst: Fr 18.03.05 21:38 
 | 
|  | 
| bavci  Hält's aus hier
 Beiträge: 12
 
 
 
 
 | 
Verfasst: Fr 18.03.05 21:40 
 
dann erhalte ich die vorhin gennante fehlermeldung und noch eine mehr:
"Anweisung erforderlich, aber Ausdruck vom Typ 'Int64' gefunden"
 | 
|  | 
| delfiphan 
          Beiträge: 2684
 Erhaltene Danke: 32
 
 
 
 
 | 
Verfasst: Fr 18.03.05 21:43 
 
		                       Delphi-Quelltext 
 									| 1:
 | k := IntToHex(Round(j),8);					 |  | 
|  | 
| bavci  Hält's aus hier
 Beiträge: 12
 
 
 
 
 | 
Verfasst: Fr 18.03.05 21:46 
 
Danke, es klappt endlich     Aber ich verstehe nicht warum ich den Wert runden musste !? Die Zahle hatte keine stelle hinter'm komma............. | 
|  | 
| delfiphan 
          Beiträge: 2684
 Erhaltene Danke: 32
 
 
 
 
 | 
Verfasst: Fr 18.03.05 21:57 
 
Delphi hat eine strenge Typenprüfung (abgesehen von Variant ). Delphi konvertiert nicht automatisch von real  zu integer  (umgekehrt aber schon). 
 	  |  bavci hat folgendes geschrieben: |  	  | Die Zahle hatte keine stelle hinter'm komma............. | 
 Woher sollte dein Programm denn das wissen? j  ist eine Gleitkommazahl und könnte Nachkommastellen haben! | 
|  | 
| Harry Hunt 
          Beiträge: 50
 
 
 
 
 | 
Verfasst: Fr 18.03.05 22:28 
 
Die strenge Typisierung von Delphi verhindert viele Leichtsinnsfehler bevor sie entstehen. Dabei ist Delphi sogar noch recht tolerant - in Programmiersprachen wie Ada kann man zu einer Real-Variable ohne vorherige Konvertierung z.B. noch nicht einmal einen Integerwert dazuaddieren. | 
|  | 
| Popov 
          Beiträge: 1655
 Erhaltene Danke: 13
 
 WinXP Prof.
 Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
 
 | 
Verfasst: Fr 18.03.05 22:35 
 
Du hättest auch so programmieren können:
 		                       Delphi-Quelltext 
 									| 1:2:
 
 | j:=(f+g+i) div 2;  k:=intToHex(j,8);
 |  f, g und i waren bereits Integer. Erst das Dividieren durch 2 machte das ganze zu Real. Mit einem Integer DIV würde die Berechnung ein Integer bleiben._________________ Popov
 | 
|  |