AGB  ·  Datenschutz  ·  Impressum  







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

Noch ein zugriff auf Datei ?

Ein Thema von EWeiss · begonnen am 2. Apr 2008 · letzter Beitrag vom 2. Apr 2008
 
EWeiss
(Gast)

n/a Beiträge
 
#4

Re: Noch ein zugriff auf Datei ?

  Alt 2. Apr 2008, 08:22
Zitat von marabu:
Moin Emil,

in Delphi solltest du einen booleschen Ausdruck nicht redundant erweitern:

Delphi-Quellcode:
begin
  // ...
  if DeleteFile(thePath + '~tmp4358.dat') {= False} then
    MessageBox(0, PChar(SysErrorMessage(GetLastError)), 'Confirm', MB_OK or MB_ICONINFORMATION);
  // ...
end;
Boolsche Werte werden auf Integer-Werte abgebildet und umgekehrt. Für Delphi gibt es eine Abbildungsregel, API-Funktionen verwenden mitunter eine abweichende. Dies nur am Rande.

Zu deinem eigentlichen Problem: Wenn du eine Datei im Abschnitt finalization löschen willst, dann solltest du sie im Abschnitt initialization bereitgestellt haben. Arbeitest du dabei mit API-Funktionen wie CreateFile() oder mit Delphi Streams oder mit den alten Prozeduren AssignFile() etc.? Zu welchem Zeitpunkt besorgst du dir den Zugriff auf die temporäre Datei? Wann und wo schließt du sie?

Freundliche Grüße

ich initialisiere (loadlibrary) in meiner INIT Routine
könnte ich in die initializations routine verschieben wäre kein problem.
Mit Delphi Stream wird aus der resource eingeladen in dieser besagten INIT Routine

Angesprochen wird sie sobald ein zugriff auf ein plugin stattfindet
sie bleibt im speicher und wird nicht immer wieder gelöscht(freigegeben) denke ist nicht nötig da nur 4K groß
ich schließe sie in finilization bevor ich sie lösche... was nicht geht.

Uwe meint es hätte mit dem DllCache zu tun (Ich schätze mal, das das daran liegt, das DLL's gecached werden.)

Edit:
habs nochmal versucht!
So siehts aus .. gleiche problem mit dem löschen..
Delphi-Quellcode:
initialization
  begin
    getVisHeader := nil;

     //Wasabi initialisieren
     SetLength(thePath, MAX_PATH) ;
     lng := GetTempPath(MAX_PATH, PChar(thePath)) ;
     SetLength(thePath, lng) ;

     ResStream := TResourceStream.Create(HInstance, 'DLL', 'DATA');
     ResStream.SaveToFile(thePath + '~tmp4358.dat');
     SetFileAttributes(PChar(thePath + '~tmp4358.dat'), FILE_ATTRIBUTE_HIDDEN);

     ResStream.free;

     WAServiceHandle := Loadlibrary(PChar(thePath + '~tmp4358.dat'));
     if (WAServiceHandle = 0) then
       begin
       MessageBox(0, 'Error loading GetAPIService',
                              'initialization', MB_OK or MB_ICONERROR);
       halt;
     end;
  end


finalization
  begin

  CloseVisDLL;
  
  if (WAServiceHandle <> 0) then
  begin
    FreeLibrary(WAServiceHandle);
    WAServiceHandle := 0;
  end;

  if (DeleteFile(thePath + '~tmp4358.dat') = false) then
    MessageBox(0, PChar(SysErrorMessage(GetLastError)),
      'Confirm', MB_OK or MB_ICONINFORMATION);

  end
gruss Emil
  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 04:47 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