AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Kompatibilität für 64Bit überprüfen
Thema durchsuchen
Ansicht
Themen-Optionen

Kompatibilität für 64Bit überprüfen

Ein Thema von Gausi · begonnen am 3. Aug 2025 · letzter Beitrag vom 13. Aug 2025
 
Benutzerbild von Gausi
Gausi
Online

Registriert seit: 17. Jul 2005
916 Beiträge
 
Delphi 12 Athens
 
#1

Kompatibilität für 64Bit überprüfen

  Alt 3. Aug 2025, 07:57
Bei mir kam die Tage eine Anfrage rein, ob man meine Library für Audio-Metadaten auch für 64Bit nutzen kann (keine DLL, einfach nur Code, der mit eincompiliert wird). Daher muss ich mich jetzt ein wenig damit beschäftigen. Google liefert da zuerst diesen Artikel (zum Umstieg), oder auch diesen (Integer-Typen).

Da Integer, Cardinal, Word, DWord, LongInt, SmallInt, Byte etc. alle gleich groß geblieben sind, dürften binäre Schreib- und Leseoperationen beim Parsen/Erstellen der Dateien kein Problem sein. Windows-Messages verschicke ich da auch nicht selbst, so dass Konflikte bzgl. Integer/WPARAM/LPARAM auch nicht zu erwarten sind.

Bleiben die Zeiger. Im deutschen Artikel ist das widersprüchlich, aber der englische Artikel erklärt das richtig mit "You cannot assume that:" (hoffe ich zumindest, kann man den Fehler eigentlich irgendwo melden?)
Zitat:
Sie sollten Zeigeroperationen in Ihrer Codebasis überprüfen.
Die Größer aller Zeiger wurde folgendermaßen geändert:
  • Auf einer 32-Bit-Windows-Plattform ist ein Zeiger 4 Byte groß.
  • Auf einer 64-Bit-Windows-Plattform ist ein Zeiger 8 Byte groß.
Sie können von Folgendem ausgehen: ... ähm... nein???
  • SizeOf(Pointer)=SizeOf(Integer/Cardinal/Longint)
Aber generell kann man Pointer ohne Änderungen weiter verwenden, oder? Ich habe z.B. so was im Code, wo ich ein wenig mit Records trickse, um Daten nicht mehrfach aus einer Datei lesen zu müssen. Sowas ist unabhängig von der Bittigkeit der Anwendung, oder?
Delphi-Quellcode:
const
  APE_PREAMBLE = 'APETAGEX';
  ID3V1_PREAMBLE = 'TAG';

type

TID3v1Structure = record
  ID: Array[1..3] of AnsiChar; // 3
  Title: Array [1..30] of AnsiChar; // 30
  Artist: Array [1..30] of AnsiChar; // 30
  Album: Array [1..30] of AnsiChar; // 30
  Year: Array [1..4] of AnsiChar; // 4
  Comment: Array [1..30] of AnsiChar; // 30
  Genre: Byte; // 1 = 128 Bytes total
end;

TApeHeader = record
  Preamble: Array[1..8] of AnsiChar; // 8
  Version: DWord; // 4
  Size: DWord; // 4
  ItemCount: DWord; // 4
  Flags: DWord; // 4
  Reserved: Array[1..8] of Byte; // 8 = 32 Bytes total
end;

PApeHeader = ^TApeHeader;

// aID3v1tag wird aus den letzten 128 Byte einer Datei gelesen
function IsValidID3Tag(aID3v1tag: TID3v1Structure): Boolean;
var
  p: Pointer;
  hiddenApeFooter: TApeHeader;
begin
  p := @aID3v1Tag.Year[4];
  hiddenApeFooter := PApeHeader(p)^ ;
  // Valid wenn:
  // - Die letzten 128 Byte starten mit "TAG",
  // - aber die letzten 32 starten NICHT mit "APETAGEX"
  result := (aID3v1Tag.ID = ID3V1_PREAMBLE)
        and (hiddenApeFooter.Preamble <> APE_PREAMBLE);
end;
Gibt es sonst noch wichtige Punkte, die man beim Umstieg auf 64Bit beachten muss, die in dem Artikel nicht erwähnt sind?

Denn sonst scheint es mit der Library keine Probleme unter 64Bit zu geben. Es compiliert, und bei ein paar Tests sind keine Dateien kaputt gegangen.
Being smart will count for nothing if you don't make the world better. You have to use your smarts to count for something, to serve life, not death.
  Mit Zitat antworten Zitat
 


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 05:45 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