AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi SHFileOperation: Access Violation in kernel32.dll
Thema durchsuchen
Ansicht
Themen-Optionen

SHFileOperation: Access Violation in kernel32.dll

Ein Thema von Aenogym · begonnen am 7. Nov 2005 · letzter Beitrag vom 8. Nov 2005
Antwort Antwort
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#1

SHFileOperation: Access Violation in kernel32.dll

  Alt 7. Nov 2005, 19:32
hi ihr,

folgender code verursacht bei mir eine AV im modul kernel32.dll:

Delphi-Quellcode:
  var fos: TSHFileOpStruct;
  begin
    fos.Wnd := application.Handle;
    fos.wFunc := FO_DELETE;
    fos.fFlags := FOF_FILESONLY or FOF_SILENT or FOF_NOERRORUI or FOF_NOCONFIRMATION;
    fos.pFrom := pChar(extractFilePath(paramstr(0))+'working\*.xml');

    SHFileOperation(fos); //<-- hier kracht's denn
  end;
der pfad existiert garantiert. xml-dateien sind auch enthalten (neben 2 ordnern).
benutze ich SHFileOperation falsch oder hat mein system ein problem?

thanks in advance,
aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Phistev
(Gast)

n/a Beiträge
 
#2

Re: SHFileOperation: Access Violation in kernel32.dll

  Alt 7. Nov 2005, 20:38
evtl. ein FillChar...
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: SHFileOperation: Access Violation in kernel32.dll

  Alt 7. Nov 2005, 21:48
Zitat von Phistev:
evtl. ein FillChar...
hi phistev,

danke für deine antwort, aber...
ich verstehe dich nicht ganz
ich habe eben mal fos.pFrom mithilfe von FillChar() mit #0 aufgefüllt (so lang, wie mein pfad lang ist). beim testen kam dann lediglich die frage, ob ich alle elemente im papierkorb wirklich löschen möchte... nach einem klick auf "ja" bekam ich eine AV in meiner anwendung und der papierkorb sowie mein ordner sind immernoch gefüllt...

aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: SHFileOperation: Access Violation in kernel32.dll

  Alt 7. Nov 2005, 22:44
1. meint er bestimmt die Struktur fos mit FillChar ordentlich zu initialisieren vorm benutzen.
2. Sehe ich auch vllt. ein Problem in dem PChar, schliesslich bastelst du dir einen neuen String zusamemn mit deinem Konstrukt und lässt dir einen r/o Zeiger auf diesen zurück geben. Das Problem dabei sehe ich darin, das der zusammengebaute String sofort nach dem Zusammenbau nicht mehr verwendet wird und daher seine Gültigkeit verliert und somit auch der PChar. Daher ist der Pfad beim Aufruf schon lange nicht mehr da wo der Zeiger hinzeigt und daher rennt er auf seiner ewigen Suche nach dem Nullbyte zuweit und bekommt eine AV im Kernel. Mal so als andere Vermutung.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: SHFileOperation: Access Violation in kernel32.dll

  Alt 8. Nov 2005, 08:53
Moin Steffen,

was mir, ausser der fehlenden Initialisierung von SHFILEOPSTRUTCT noch auffällt:
pFrom kann auch eine Liste enthalten, in der die einzelnen Strings durch ein Nullbyte getrennt werden, deshalb muss die Liste mit eine zusätzlichen Nullbyte abgeschlossen werden. Dieses musst Du aber zusätzlich mit angeben, da an einem PChar nur ein abschliessendes Nullbyte hinzugefügt wird.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Orakel-von-Delphi
Orakel-von-Delphi

Registriert seit: 27. Jan 2004
Ort: Mittelhessen
45 Beiträge
 
Delphi 2007 Professional
 
#6

Re: SHFileOperation: Access Violation in kernel32.dll

  Alt 8. Nov 2005, 09:29
Schau mal hier: http://www.delphipraxis.net/internal...ct.php?t=55364

Vielleicht muss Du auch den Flag FOF_NO_CONNECTED_ELEMENTS nutzen, weil bei verknüpften Datenen eine Endlos-Rekursion eintreten kann und dann die AV auftritt.
Michael
  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 03:51 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