AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Bilder laden ohne anzuzeigen - keine Größen vorgabe
Thema durchsuchen
Ansicht
Themen-Optionen

Bilder laden ohne anzuzeigen - keine Größen vorgabe

Ein Thema von Destroyer446 · begonnen am 14. Jun 2011 · letzter Beitrag vom 16. Jun 2011
Antwort Antwort
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#1

AW: Bilder laden ohne anzuzeigen - keine Größen vorgabe

  Alt 15. Jun 2011, 08:18
@Bjoerk: Auch wenns nicht zum eigentlichen Topic gehört: ich bin ja auch so einer, der jedes dynamische Array zum Schuss wieder auf Länge Null setzt, meine aber irgendwo schon mal gehört zu haben, daß dies nicht nötig sei (zumindest lokal wie hier), und das sogar mit FastMM getestet zu haben. Hast Du mehr Infos dazu, daß das wirklich Speicherlöcher produziert?
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Bilder laden ohne anzuzeigen - keine Größen vorgabe

  Alt 15. Jun 2011, 08:25
Natürlich produziert so etwas keine Speicherlöcher. Sobald die letzte Referenz auf ein dyn. Array (oder einen Record) weg ist - was hier beim verlassen der Prozedur der Fall ist - wird der Speicher freigegeben (außer ich reserviere ihn mir selbst mittels GetMem, New, etc.). Eigentlich bekannt?!
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Bilder laden ohne anzuzeigen - keine Größen vorgabe

  Alt 15. Jun 2011, 08:50
Interfaces, dyn. Arrays und Strings unterliegen einer Referenzzählung, welche es dann automatisch freigibt.
Records und static Arrays liegen direkt in der Variable und werden zusammen mit dieser entsorgt.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Bilder laden ohne anzuzeigen - keine Größen vorgabe

  Alt 15. Jun 2011, 09:34
Danke

Da war doch mal so ein älterer Bug (Delphi 2006 evtl.? Wo es die Ausnahme gab, daß die Referenzzählung im initialization-Teil von Units nicht korrekt funktionierte?) bin ich da etwas sensibel. Gut zu wissen daß ich nicht falsch lag
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Bilder laden ohne anzuzeigen - keine Größen vorgabe

  Alt 15. Jun 2011, 10:11
Der Delphicompiler umgibt die Funktions/Procedur/Methoden-Rümpfe mit einem Try-Finally, wenn derartige Typen in den lokalen Variablen, bzw. als Parameter (außer bei Const und Var) liegen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Bilder laden ohne anzuzeigen - keine Größen vorgabe

  Alt 16. Jun 2011, 11:18
@CCRDude, Deep-Sea, himitsu.

Da ich SetLength(Array, N) als GetMem(Array, N*SizeOf(..)) verstehe, war für mich SetLength(Array, 0) - also FreeMem(Array, N*SizeOf(..)) - folgerichtig.

Daß Letzteres Delphi bei lokalen Variablen für uns erledigt, war mir nicht bewusst.

Danke für den Hinweis.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Bilder laden ohne anzuzeigen - keine Größen vorgabe

  Alt 16. Jun 2011, 11:58
Daß Letzteres Delphi bei lokalen Variablen für uns erledigt,
Aber nur für gemanagte Typen (String, dyn. Array und Interface).
Deren Variablen werden automtisch initialisiert (ist für die weitere Behandlung notwendig, da man jasonst nie weiß ob etwas drinnen wäre)
und werden dann auch automatisch freigegeben.
Ein Therapeut entspricht 1024 Gigapeut.
  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 07:32 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