AGB  ·  Datenschutz  ·  Impressum  







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

Records unter 32 und 64Bit

Ein Thema von EWeiss · begonnen am 27. Aug 2018 · letzter Beitrag vom 29. Aug 2018
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

Records unter 32 und 64Bit

  Alt 27. Aug 2018, 16:14
Ich stehe langsam wirklich auf Kriegsfuß mit 32 und 64Bit Anwendungen.
Anwendung kompiliert mit 32Bit alles fein.
Kurze und lange Pfade.

Anwendung kompiliert mit 64Bit.
1. gestartet aus einen langen Pfad. Alles fein (von der Performance mal abgesehen)
Code:
"C:\Program Files (x86)\Microsoft Visual Studio\VB98\Sourcemein\SKAero Projekte64\Sprite Control\Carousel\bin"
2. gestartet aus einem kurzen Pfad. Nichts mehr fein.
Code:
C:\Users\xxx\Desktop\Carousel\bin
Die Einträge im Record werden verändert.
Delphi-Quellcode:
  SpriteData = record
    ImageName: PWideChar;
    hBmp: HBitmap;
    ID: Integer;
    LabelID: Integer;
    xPos: Integer;
    yPos: Integer;
    Width: Integer;
    Height: Integer;
    Angle: single;
  end;
  TSpriteData = Array[1..10] of SpriteData;
Delphi-Quellcode:
var
  gSpriteData: TSpriteData;
Den Unterschied kann man in den angehängten Pics sehen.
Scheint so das 64Bit etwas gegen mich hat an vielen Ecken stoße ich auf seltsames verhalten.

gruss

Geändert von EWeiss (11. Jul 2019 um 16:53 Uhr)
  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
 
#2

AW: Records unter 32 und 64Bit

  Alt 27. Aug 2018, 16:47
PWideChar ist unter 64-Bit 8 Byte groß, statt 4. Dadurch sind alle weiteren Felder nach hinten verschoben im Speicher.
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
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Records unter 32 und 64Bit

  Alt 27. Aug 2018, 16:53
PWideChar ist unter 64-Bit 8 Byte groß, statt 4. Dadurch sind alle weiteren Felder nach hinten verschoben im Speicher.
Versteh danke..
Aber warum funktioniert es dann bei langen Pfaden? Da wird auch PWideChar verwendet. (Glück? )
Und es wird nicht alles verschoben wie du im shot sehen kannst nur die ersten beiden werden verändert.

gruss

Geändert von EWeiss (27. Aug 2018 um 17:00 Uhr)
  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
 
#4

AW: Records unter 32 und 64Bit

  Alt 27. Aug 2018, 17:05
PWideChar ist unter 64-Bit 8 Byte groß, statt 4. Dadurch sind alle weiteren Felder nach hinten verschoben im Speicher.
Versteh danke..
Aber warum funktioniert es dann bei langen Pfaden? Da wird auch PWideChar verwendet. (Glück? )
Und es wird nicht alles verschoben wie du im shot sehen kannst nur die ersten beiden werden verändert.
Mh stimmt.
Wie kommen denn die Daten in das Record bzw. Array?
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
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Records unter 32 und 64Bit

  Alt 27. Aug 2018, 17:08
PWideChar ist unter 64-Bit 8 Byte groß, statt 4. Dadurch sind alle weiteren Felder nach hinten verschoben im Speicher.
Versteh danke..
Aber warum funktioniert es dann bei langen Pfaden? Da wird auch PWideChar verwendet. (Glück? )
Und es wird nicht alles verschoben wie du im shot sehen kannst nur die ersten beiden werden verändert.
Mh stimmt.
Wie kommen denn die Daten in das Record bzw. Array?
Frage ich mich selbst..
Ich stoße wirklich auf viele dieser seltsamen verhalten in Verbindung mit 64Bit.
Ist auch glaube ich nicht nötig da ich damit keinen Record außerhalb der EXE ansprechen.

Habe es mit
Code:
{$ALIGN ON}
{$MINENUMSIZE 4}
versucht da ich dachte vielleicht liegt es hier dran.. aber nein keine Chance.

Wie sie da rein kommen bzw.. übergeben werden ist im Quelltext ersichtlich.

gruss

Geändert von EWeiss (27. Aug 2018 um 17:12 Uhr)
  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

AW: Records unter 32 und 64Bit

  Alt 27. Aug 2018, 17:14
Wie sie da rein kommen bzw.. übergeben werden ist im Quelltext ersichtlich.
Ja das meinte ich.
Und das ist ein sehr wichtiger Punkt der besser in deinem Post enthalten wäre als *irgendwo* in deinem angehangenen Quelltext.
Es gibt wahrscheinlich nicht viele die sich nur deswegen deinen gesamten Code anschauen wollen. (Ich z.B. auch nicht)
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
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Records unter 32 und 64Bit

  Alt 27. Aug 2018, 16:51
Um das ganze zu vereinfachen.. Quelltext im Anhang. (Setzt mindestens die CE zum kompilieren voraus)
Keine Exe im Archiv diese müsst ihr selbst kompilieren abhängig von der jeweiligen Plattform.
Die DLL von beiden Plattformen ist der gleiche Quelltext ohne jegliche Änderung.
Diese in das Bin Verzeichnis kopieren abhängig vom Kompilat das ihr erstellen wollt.

Es ist mir noch ein Problem aufgefallen.
Beim beenden der 32Bit Anwendung bekomme ich einen 216 Error bei 64Bit nicht!
Kein Problem muss das noch fixen wird wohl ein Handle sein das freigegeben wird und schon freigegeben wurde.
Nur seltsam das es hier bei 32Bit passiert und nicht mit 64..

Und so geht es weiter

PS:
Damit könnt ihr auch die Probleme mit der CPU Auslastung testen die bei 64Bit 25% höher liegt als bei der 32Bit Plattform.

gruss

Geändert von EWeiss (28. Aug 2018 um 01:59 Uhr)
  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 05:24 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 by Thomas Breitkreuz