AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Int64 zerlegen und zusammenbauen

Ein Thema von Neutral General · begonnen am 7. Mai 2007 · letzter Beitrag vom 7. Mai 2007
Antwort Antwort
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Int64 zerlegen und zusammenbauen

  Alt 7. Mai 2007, 12:44
Hi,

Ich würde gerne ein Int64 in seine 8 Bytes zerlegen... Nur bräuchte man dafür sowas wie HiInteger... Ab Integer ist das ja kein Problem mehr (HiWord,HiByte)... Und das ganze muss natürlich wieder zusammensetzbar sein..

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Int64 zerlegen und zusammenbauen

  Alt 7. Mai 2007, 12:54
AFAIK gibt es ein Int64def -record oder so ähnlich... ich muss mal nachsehn

Edit: Kannst du aber auch selber machen:

Delphi-Quellcode:
TInt64def = record
  case Integer of
    0: ( Int64val: Int64);
    1: ( LowInt, HighInt: Cardinal);
    2: ( Word1, Word2, Word3, Word4: Word);
    3: ( Byte1,Byte2, ... ,Byte8: Byte);
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Int64 zerlegen und zusammenbauen

  Alt 7. Mai 2007, 12:55
Es gäbe da noch:
shl
shr
mod
div

und zur Not kannst du auch mit 2 pinteger auf die int64 variable zugreifen.
Edit: Die Not:
Delphi-Quellcode:
function HighDWord(value:int64):DWord; stdcall;
var int:pcardinal;
begin
  int:=@value;
  inc(int);
  result:=int^;
end;
function LowDWord(value:int64):DWord; stdcall;
var int:pcardinal;
begin
  int:=@value;
  result:=int^;
end;
Ich hoffe, das war jetzt richtig rum.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#4

Re: Int64 zerlegen und zusammenbauen

  Alt 7. Mai 2007, 12:55
Na mach dir ein variantes Record das aus einem Array von 8 Bytes und einem Int64 besteht.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Int64 zerlegen und zusammenbauen

  Alt 7. Mai 2007, 13:04
Hier mal eine einfache Lösung (ähnlich der von cruiser):
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
type
  T64 = packed record
    case Tag: Byte of
      0: (I64: Int64);
      1: (B64: array[0..7] of Byte);
  end;
var
  B: Byte;
  T: T64;
begin
  try
    Memo1.Clear;
    T.I64 := StrToInt64(Edit1.Text);
    for B := Low(T.B64) to High(T.B64) do
      Memo1.Lines.Add(IntToHex(T.B64[B], 2));
  except
    //
  end;
end;
Ein Edit und ein Memo auf dem Form. Code ins OnChange vom Edit.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Int64 zerlegen und zusammenbauen

  Alt 7. Mai 2007, 15:01
Hi,

Danke für die Antworten.. Das gefällt mir doch schonmal..

vergesst das was eben hier stand... so ein "packed" kann schon Wunder wirken

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:02 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