AGB  ·  Datenschutz  ·  Impressum  







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

CreateDir('c:\temp'); -> external exception

Ein Thema von hoika · begonnen am 9. Feb 2012 · letzter Beitrag vom 9. Feb 2012
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#1

CreateDir('c:\temp'); -> external exception

  Alt 9. Feb 2012, 14:03
Hallo,

in meinem Code steht so was drin

try
CreateDir('C:\temp');
except
end;

Jetzt kommt auf einigen Rechnern ohne Laufwerk C (genauer C ist ein Wechselmedium)

Exception Processing Message c0000013 Parameters 75b6bf9c 4 75b6bf9c 75b6bf9c

Das habe ich mal nachgestellt.
Ich bekomme die Meldung nicht.

Also den Process Monitor angeworfen.
Den Aufruf CreateFile C:\temp kann ich bei mir schön mitloggen,
ABER
Auf dem Test-Rechner ist der Befehl nicht da !

Ist das CreateDir (intern CreateDirectory) wirklich so clever ???

Aber warum kommt die Exception auf dem anderen Rechner ???

Das mit dem CreateDir ändere ich noch,
da die Exception aber auch noch an einer anderen Stelle im Code kommt
(dort gibt es kein CreateDir) habe ich etwas anderes Unbekanntes im Verdacht.

Was nun ?


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: CreateDir('c:\temp'); -> external exception

  Alt 9. Feb 2012, 14:16
Warum der try-except-Block, wenn du die Exception eh in die Tonne kloppst?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: CreateDir('c:\temp'); -> external exception

  Alt 9. Feb 2012, 14:21
Vielleicht bringt SetErrorMode Besserung?
Delphi-Quellcode:
ErrMode := SetErrorMode(SEM_FAILCRITICALERRORS);
try
  //Code
finally
  SetErrorMode(ErrMode);
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: CreateDir('c:\temp'); -> external exception

  Alt 9. Feb 2012, 14:26
Hallo,

ich bekomme die Meldung ja nicht,
auch auf dem Testrechner ohne Laufwerk C.

Waber.
Weit interessanter ist, dass der ProcessMonitor
auf dem Testrechner ohne Laufwerk C das C:\Temp gar nicht anzeigt !
Das ist das, was mich so wundert.

Im Code (ist nicht meiner) steht auch noch sowas wie
"muss angelegt werden, weil sonst das SQL (damals noch per BDE) nicht funktioniert ???)
Das hat wohl was mit dem SQL-Links zu tun gehabt, der bei Queries
das Query-Ergebnis im Temp zwischengepuffert hat.

Alles sehhhhr merkwürdig.


Heiko


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: CreateDir('c:\temp'); -> external exception

  Alt 9. Feb 2012, 14:34
Mach doch mal eine gescheite Ausnahmefehlerbehandlung, damit du eine aussagekräftige Fehlermeldung bekommst. Dann kann man gucken, was man macht. Aber ohne das Problem wirklich zu kennen, ist das etwas schwer.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.346 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: CreateDir('c:\temp'); -> external exception

  Alt 9. Feb 2012, 15:20
Zuerst wird das Laufwerk zu dem angegebenen Pfad ermittelt (sprich sowas wie \Device\Harddisk6\DR6). Das existiert schon gar nicht, also kommt Windows gar nicht mehr an die Stelle, an der der konkrete Pfad geprüft wird. Die Abfragen auf der Ebene fängt der Process Monitor aber gar nicht ab, deshalb siehst du dort auch nix.

Deshalb siehst du im Process Monitor auch nichts, wenn Windows meldet, dass \Device\Harddisk6\DR6 nicht gefunden wird. Da wird dann auf ein Laufwerk zugegriffen, das existiert, aber nicht zugreifbar ist (DVD-Laufwerk ohne DVD, Kartenleser ohne Karte, ...).

Aber davon mal ganz abgesehen:
Eigentlich solltest du nur bei Konfigurationsproblemen überhaupt auf ein nicht existentes Laufwerk zuzugreifen versuchen. Denn normalerweise weißt du ja das korrekte Laufwerk.
Wozu willst du denn ein Verzeichnis c:\temp anlegen?!? Das ist doch Schwachsinn. Oder sollte das nur ein Beispiel sein?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: CreateDir('c:\temp'); -> external exception

  Alt 9. Feb 2012, 15:32
Hallo,

Zitat:
Eigentlich solltest du nur bei Konfigurationsproblemen überhaupt auf ein nicht existentes Laufwerk zuzugreifen versuchen.
Ich mache gar nichts, ich muss nur uralten Code verwalten ...

Meine Frage zielte auch darauf ab, ob jemand schon mal so eine Exception hatte,
und die auf eine CreateDir zurückzuführen war.
Das man sowas überhaupt nicht macht, ist mir klar.

Danke erst mal.
Muss jetzt erst mal warten, bis der Kunde mich auf seine Kiste läßt.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: CreateDir('c:\temp'); -> external exception

  Alt 9. Feb 2012, 16:19
Dann mach es gleich richtig und nutze das temporäre Verzeichnis des Benutzers.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.346 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: CreateDir('c:\temp'); -> external exception

  Alt 9. Feb 2012, 16:58
Ich mache gar nichts, ich muss nur uralten Code verwalten ...
Das kann ich seehr gut nachvollziehen.
Ich versuche die Leichen, die ich finde, dann aber auch gleich zu ermorden.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#10

AW: CreateDir('c:\temp'); -> external exception

  Alt 9. Feb 2012, 18:13
Diese Exception wird von der Win32 API geworfen. Ja auch die Win32 API kann Exceptions werfen, statt GetLastError oder Rückgabewerte zu verwenden. MS hat dazu "Structured Exception Handling" eingeführt.

Unter Delphi, soweit ich weiß, wird dazu die EExternalException ausgelöst. Die Nummer "C0000013" ist ein HRESULT (siehe MSDN oder Wikipedia) und du erkennst den Fehlerwert 13hex, welcher "Das Medium ist schreibgeschützt" bedeutet.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)

Geändert von Dezipaitor ( 9. Feb 2012 um 18:23 Uhr)
  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 16:06 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