AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein GetMem mit Delphi 2010 unter Windows 8
Thema durchsuchen
Ansicht
Themen-Optionen

GetMem mit Delphi 2010 unter Windows 8

Ein Thema von maxbafh · begonnen am 17. Sep 2014 · letzter Beitrag vom 18. Sep 2014
Antwort Antwort
Seite 1 von 2  1 2      
maxbafh

Registriert seit: 23. Jan 2014
6 Beiträge
 
#1

AW: GetMem mit Delphi 2010 unter Windows 8

  Alt 17. Sep 2014, 14:04
Das interessante ist aber, das es bis Windows 7 problemlos klappt aber unter Windows 8 knallt es. Das ist der einzige Unterschied zwischen den beiden Systemen

Wie soll ich sonst ein Bild laden, wenn ich es nicht komplett in den Memory legen kann? Physikalische System-Memory steht ja genug zur Verfügung.

Was noch dazu zu sagen ist mit XE5 kompiliert funktioniert der Source. Ich will nur meine alte App nicht auf XE5 umändern, da sie eigentlich EOL ist.

Geändert von maxbafh (17. Sep 2014 um 14:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.419 Beiträge
 
Delphi 12 Athens
 
#2

AW: GetMem mit Delphi 2010 unter Windows 8

  Alt 17. Sep 2014, 14:12
Unterschiede:
Die DLLs werden nicht immer an der selben Stelle geladen, und es gibt sogar andere DLLs in beiden Systemen. (es gibt sogar ein Sicherheitssystem, welches die DLLs immer mal wieder verschiebt, so daß es Hacker/Viren schwerer haben, über eine hardgecodete Adresse einfach so irgendwas böses zu machen.
Auch GetMem un Konsorten geben nicht immer die selben Speicherpositionen zurück, bei jedem Programmstart, womit alle anderen Speicherblöcke auch gerne mal anders erteilt sind.

Fazit: Du hattest Glück, daß es nicht vorher schon ab und an mal geknallt hat.



PS: Hatte meinen letzte Beitrag zwischenzeitlich nochmal erweitert.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.227 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: GetMem mit Delphi 2010 unter Windows 8

  Alt 17. Sep 2014, 14:22
Das interessante ist aber, das es bis Windows 7 problemlos klappt aber unter Windows 8 knallt es. Das ist der einzige Unterschied zwischen den beiden Systemen
Einmal Win7, einmal Win8. Dieser "einzige" Unterschied ist das du 2 vollkommen unterschiedliche System vergleicht bei denen keine geladene Systemdatei gleich ist.


Was noch dazu zu sagen ist mit XE5 kompiliert funktioniert der Source.
Evtl. als 64-Bit Anwendung kompiliert?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.419 Beiträge
 
Delphi 12 Athens
 
#4

AW: GetMem mit Delphi 2010 unter Windows 8

  Alt 17. Sep 2014, 14:26
Was noch dazu zu sagen ist mit XE5 kompiliert funktioniert der Source.
andere RTL/VCL = andere Dinge im RAM
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (17. Sep 2014 um 14:29 Uhr)
  Mit Zitat antworten Zitat
maxbafh

Registriert seit: 23. Jan 2014
6 Beiträge
 
#5

AW: GetMem mit Delphi 2010 unter Windows 8

  Alt 17. Sep 2014, 14:27
Was noch dazu zu sagen ist mit XE5 kompiliert funktioniert der Source.
Evtl. als 64-Bit Anwendung kompiliert?[/QUOTE]

Da klappt es in beiden Varianten sowohl als 64bit als auch als 32bit Version.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.419 Beiträge
 
Delphi 12 Athens
 
#6

AW: GetMem mit Delphi 2010 unter Windows 8

  Alt 17. Sep 2014, 14:31
Wie gesagt, ein einziges Byte an anderer/neuer Stelle im RAM und schon kann es das gewesen sein.

Mit FastMM kann man sich gern eine Memory-Map von seinem Programm generieren lassen und sieht dann wie/wo der Speicher belegt ist.

Da klappt es in beiden Varianten sowohl als 64bit als auch als 32bit Version.
Warum es mit 64 Bit klappt, hatte ich ja bereits geschrieben.


Nimm dir einen der abschließenden Punkte von Post #2 und schon ist das Problem behoben.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
maxbafh

Registriert seit: 23. Jan 2014
6 Beiträge
 
#7

AW: GetMem mit Delphi 2010 unter Windows 8

  Alt 17. Sep 2014, 15:59
Alles zusammen eine nette Idee, kann ich jedoch nicht in der Praxis umsetzen. Nicht weil ich es nicht kann, sondern weil es nicht klappt.

*) MMF - Komprimiertes Bild ist 500MB auf der HDD => unkomprimiert > 1GB brauch es aber unkomprimiert damit ich damit arbeiten kann - MMF kann ich aber nur 1:1 Mappen und nicht komprimiert auf unkomprimiert.

*) Aufteilen - ja ein gesamtes Image kann ich nicht aufteilen auf zwei Speicherbereiche, das braucht einen zusammenhängenden Memory.

*) Mit weniger Aus zu kommen - gut gemeint, schlecht in der Umsetzung.

*) 64bit App - ja für die neue Version, nur nicht für die EOL Version mehr.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.485 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

AW: GetMem mit Delphi 2010 unter Windows 8

  Alt 17. Sep 2014, 18:17
Bei einem 32-Bit Programm kann man noch das Linker-Flag IMAGE_FILE_LARGE_ADDRESS_AWARE setzen. Dadurch erhöht sich der Adressraum von 2 GB auf 3GB. Vorraussetzung ist ein 64-Bit Windows oder ein 32-Bit Windows mit dem /3GB Boot-Schalter.

Das Programm und all seine Komponenten und DLLs müssen dann aber auch mit Pointern größer 2 GB richtig umgehen können, was z.B. bei "Integer(P1) - Integer(P2)" nicht der Fall ist (Overflow-Exception).

Folgende Zeile in die DPR Datei einfügen
Delphi-Quellcode:
program MyApp;

{$SetPeFlags $20} // IMAGE_FILE_LARGE_ADDRESS_AWARE

uses
  Forms,
...
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.813 Beiträge
 
Delphi 12 Athens
 
#9

AW: GetMem mit Delphi 2010 unter Windows 8

  Alt 18. Sep 2014, 07:36
Stichwort "EOL": Es ist also eine rein akademische Frage gewesen? Entweder das Programm ist am Ende, oder eben nicht. Wenn es tot ist, wurde alles bereits gesagt. Lebt es noch, dann stell halt auf XE5 um, offensichtlich kompiliert es ja bereits - der Rest dürfte dann auch mit vertretbarem Aufwand machbar sein. Für ein totes Programm ist es im übrigen ein leichtes zu sagen "Läuft nur bis Windows 7".

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.490 Beiträge
 
Delphi 12 Athens
 
#10

AW: GetMem mit Delphi 2010 unter Windows 8

  Alt 18. Sep 2014, 11:48
*) Aufteilen - ja ein gesamtes Image kann ich nicht aufteilen auf zwei Speicherbereiche, das braucht einen zusammenhängenden Memory.
Eine Paintbox, zwei oder mehr Bitmaps und im OnPaint an der richtigen Stelle zeichnen.
Was glaubst du wie Bildbearbeitungssoftware mit gescannten Bildern umgeht, die teilweise mehrere hundert MB groß sind.

Geändert von Blup (18. Sep 2014 um 11:52 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 02:30 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