AGB  ·  Datenschutz  ·  Impressum  







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

Freigeben von Records

Ein Thema von TheMiller · begonnen am 23. Mär 2005 · letzter Beitrag vom 23. Mär 2005
Antwort Antwort
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

Freigeben von Records

  Alt 23. Mär 2005, 00:29
Hey.

habe gerade beim Durchtesten gemerkt, dass mein Programm zunehmend Arbeitsspeicher frisst, je länger ich es benutze. Arbeite mittlerweile viel mit versch. Records. Jetzt schließe ich immer die offenen Record-Dateien, wenn ich eine Form verlasse und öffne sie wieder, wenn ich sie brauche. Muss ich nicht aber doch den Speicher noch freigeben? Dachte so:

datei.free; Das mag der Compiler aber nicht:

Objekt, Klassentyp oder Record erforderlich gebe ich

data.free ein, funzt es auch nicht.

Ist diese Methode überhaupt notwendig, oder gebe ich den Speicher schon frei, indem ich die Datei schließe?
Bisheriger Nutzername "DJ-SPM"
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Freigeben von Records

  Alt 23. Mär 2005, 00:32
Records kan man nicht frei geben. Entweder hält man sie im Speicher (dynamisches Array zum beispiel) oder nicht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Freigeben von Records

  Alt 23. Mär 2005, 00:33
Um deine Frage beantworten zu können, wäre es hilfreich, wenn du uns verrätst, von welchem Typ datei bzw. data sind.

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#4

Re: Freigeben von Records

  Alt 23. Mär 2005, 00:34
Also kann ich einfach mit CloseFile die Datei bedenkenlos schließen, ohne dass "Überreste" im Speicher bleiben?

Delphi-Quellcode:
Klar: datei: file of TRecord
data: TRecord
Bisheriger Nutzername "DJ-SPM"
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Freigeben von Records

  Alt 23. Mär 2005, 00:37
Delphi-Referenz durchsuchenCloseFile löscht nur die Verknüpfung zur Datei, die mit [oh]AssignFile[oh] angelegt wurde. Du solltest diesbezüglich mal etwas in der Hilfe lesen. Wenn du vorher alle Records in ein dynamisches Array geladen hast, wird das nichts am Speicherverbrauch ändern.

Jetzt erklär uns doch mal näher, was du da machst, sonst ist das hier nur ein Rumgerate ins blaue.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#6

Re: Freigeben von Records

  Alt 23. Mär 2005, 00:40
Ok,

ich habe im FormActive die Prozedure "Assign". Dann lese oder schreibe ich die Daten mit seek, read und write. Wenn ich dann dieses Formular verlasse, habe ich die Prozedur "CloseFile". Ein Array benutze ich garnicht...
Bisheriger Nutzername "DJ-SPM"
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Freigeben von Records

  Alt 23. Mär 2005, 00:41
Dann dürftest du auch nichts mehr im Speicher haben, wenn dein Record, in dem du die Daten einlist, lokal ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#8

Re: Freigeben von Records

  Alt 23. Mär 2005, 00:42
OK,

dann sage ich mal wieder "danke"
Bisheriger Nutzername "DJ-SPM"
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Freigeben von Records

  Alt 23. Mär 2005, 00:44
Die Methode .Free wird z.B. bei TFileStream benötigt, um den Speicher freizugeben.
Bei typisierten Dateien, wie du sie verwendest, gibt es keine Methode Free.
Deswegen vermute ich, dass das Speicherleck irgendwo anders in deinem Programm liegt.

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Freigeben von Records

  Alt 23. Mär 2005, 00:46
Zitat von Binärbaum:
Die Methode .Free wird z.B. bei TFileStream benötigt, um den Speicher freizugeben.
Aber nur den Speicher für das TFileStream-Objekt! Desweiteren wird noch die Datei geschlossen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 02:47 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