AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Integers, Strings, booleans in BinärDaten converertieren
Thema durchsuchen
Ansicht
Themen-Optionen

Integers, Strings, booleans in BinärDaten converertieren

Ein Thema von snow · begonnen am 14. Jan 2008 · letzter Beitrag vom 14. Jan 2008
Antwort Antwort
Seite 2 von 3     12 3      
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Integers, Strings, booleans in BinärDaten converertieren

  Alt 14. Jan 2008, 20:56
Das habe ich doch geschrieben: Inc wird vom Compiler umgesetzt. Wenn du dir die CPU-Ansicht anschaust, siehst du, dass keine Funktion Inc aufgerufen wird.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
snow

Registriert seit: 28. Jun 2007
277 Beiträge
 
#12

Re: Integers, Strings, booleans in BinärDaten converertieren

  Alt 14. Jan 2008, 21:13
Und wie kann ich dann einen integer wert übergeben wenn ich noch nicht seine breite weis?

es macht ja schon einen unterschied ob ich ein Byte oder 4 byte speicher benutze.

Delphi muss doch Enumeric-Typ auch als übergabeparameter akzeptieren.
wenn ich so was hier mache:

Delphi-Quellcode:
 function InttoBin(var Int):TBinaryObject;
begin
SetLength(Result, SizeOf(Int));
Move(Int, result[0], sizeof(Int));
end;
dann sollte ja Int von jedem typ möglich sein.

Aber egal welchern typ ich verwende es kommt beim sizeof(int) Null raus. dabei soll var doch im gegensatz zu Int : integer die direkte variable weitergeben, sodass änderungen von int auch änderungen von der int zugewiesenen Variable hervorrufen.
In meinem Fall wäre auch const interressant aber da kommt auch immer null raus.

gruß snow
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: Integers, Strings, booleans in BinärDaten converertieren

  Alt 14. Jan 2008, 21:18
Eigentlich müsste hier immer 4 rauskommen, da es sich um einen Zeiger handelt. Warum Var?
Markus Kinzler
  Mit Zitat antworten Zitat
snow

Registriert seit: 28. Jun 2007
277 Beiträge
 
#14

Re: Integers, Strings, booleans in BinärDaten converertieren

  Alt 14. Jan 2008, 21:46
es kommt aber immer Null(mat = 0) raus.

kannst ja mal die function mit nem byte aufrufen. oder mit nem double oder mit ner integer.

egal was kommt. Der PC schpuckt die Null raus.

es muss doch auch ne möglichkeit geben eine integer variable mit dem typ zu übergeben in dem si ist ohne überladen. Der PC weis doch obs nun ein byte ist. dann kann er doch auch die variable auf nen byte anpassen, oder ist delphi nicht so toll wie lange angenommen?

auch ordinäre Typen muss man übergeben können.

function InttoBin(var Int):TBinaryObject; Wenn ich es so übergebe muss ich doch unterscheiden können von welchem typ meine variable ist.

gruß snow
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: Integers, Strings, booleans in BinärDaten converertieren

  Alt 14. Jan 2008, 21:50
Wie soll das ohne Angabe von einem Typ gehen?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#16

Re: Integers, Strings, booleans in BinärDaten converertieren

  Alt 14. Jan 2008, 21:54
@snow: Bei deinen Vorhaben der letzten Zeit würde ich dir empfehlen über Delphi hinaus zu schauen und dir einfach mal die Grundlagen der Informatik genau zu betrachten. Also nicht irgendwelche Programmiersprachen sondern bitweises rechnen, machienenbefehle etc. So das du weißt was im Rechner eigentlich passiert wenn du einen simplen Delphi befehl nutzt. Wie bereits erwähnt ist Speicher einfach Speicher der in Bits und Bytes vorliegt. Ob du diese Bits als String, Pointer, Integer, Extended etc. interpretierst ist eine Darstellungssache. Und um das zu begreifen ist es glaub ich das beste du weißt was eigentlich im Rechner passiert (und nicht nur was auf dem Bildschirm zu sehen ist oder per Programmiersprache zusammengetippt werden kann)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
snow

Registriert seit: 28. Jun 2007
277 Beiträge
 
#17

Re: Integers, Strings, booleans in BinärDaten converertieren

  Alt 14. Jan 2008, 21:56
Wenn ich ein byte an eine function mit einem integer-parameter übergebe, dann soll der nicht das byte in einen integer(32) konvertieren sondern als byte belassen und die function durchführen.

genauso bei allen anderen integer-untertypen.

am besten wäre sowiso eine routine die einen ordinären typ annimmt und dann seine größe bestimmt(via sizeof) und dann das ganze via move ins array läd.

gruß snow
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#18

Re: Integers, Strings, booleans in BinärDaten converertieren

  Alt 14. Jan 2008, 22:00
SizeOf() liefert dir aber nur den Speicherplatz der die Variable belegt = maximaler Wertebereich.
Du könntest überladene Funktionen nehmen
Markus Kinzler
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#19

Re: Integers, Strings, booleans in BinärDaten converertieren

  Alt 14. Jan 2008, 22:07
procedure WasAuchImmer(const Variable; Size: Cardinal); Anders geht es nicht. Punkt aus. Du kannst innerhalb der Routine nicht mehr feststellen wie groß die Variable ist, weil diese Information nicht übergeben wird. Also übergib diese Information per Hand. Oder du überlädtst dich tot.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
snow

Registriert seit: 28. Jun 2007
277 Beiträge
 
#20

Re: Integers, Strings, booleans in BinärDaten converertieren

  Alt 14. Jan 2008, 22:12
Zitat:
SizeOf() liefert dir aber nur den Speicherplatz der die Variable belegt = maximaler Wertebereich.
Du könntest überladene Funktionen nehmen
ja das würde mir ja reichen aber...

Delphi-Quellcode:
function InttoBin(X : integer):TBinaryObject;
begin
SetLength(Result, SizeOf(X));
Move(X, result[0], sizeof(X));
end;
wenn ich diese function mit dieser routine hier aufrufe....

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var int : byte;
bin : TBinaryObject;
begin
int:=244;
bin:=inttobin(int);
end;
dann hab ich als sizeof(X) immer 4, weil das byte voher in einen integer32 umgewandelt wird. Dabei gehen 3 bytes lehr aus. Obwohl der programmer ja eigendelich int schon als byte deklariert hat.

Der programmer nimmt also an, dass int maximal 255 groß wird. Warum also immer 4 Bytes verwenden.

gruß snow

PS:// das mag so klingen als ob ich bei programmen bytes zählen würde. Zwar macht es bei Gbyte-Festplatten nix aus ob jetz 4 oder 1 Byte benutz wird, aber wie heisst es so schön: Die Menge machts. Oder : Wer den Pennig/Cent nicht ehrt dem ist auch die D-mark/Euro nix wert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 10:54 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