![]() |
CreateDir('c:\temp'); -> external exception
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 |
AW: CreateDir('c:\temp'); -> external exception
Warum der try-except-Block, wenn du die Exception eh in die Tonne kloppst?
|
AW: CreateDir('c:\temp'); -> external exception
Vielleicht bringt SetErrorMode Besserung?
Delphi-Quellcode:
ErrMode := SetErrorMode(SEM_FAILCRITICALERRORS);
try //Code finally SetErrorMode(ErrMode); end; |
AW: CreateDir('c:\temp'); -> external exception
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 |
AW: CreateDir('c:\temp'); -> external exception
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.
|
AW: CreateDir('c:\temp'); -> external exception
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? |
AW: CreateDir('c:\temp'); -> external exception
Hallo,
Zitat:
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 |
AW: CreateDir('c:\temp'); -> external exception
Dann mach es gleich richtig und nutze das temporäre Verzeichnis des Benutzers.
|
AW: CreateDir('c:\temp'); -> external exception
Zitat:
Ich versuche die Leichen, die ich finde, dann aber auch gleich zu ermorden. :mrgreen: |
AW: CreateDir('c:\temp'); -> external exception
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 ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 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