Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor .NET
  Fehler in FileManager.CopyFile-Funktion von Inventor API?!

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Fehler in FileManager.CopyFile-Funktion von Inventor API?! (4554 mal gelesen)
Gerundt
Mitglied
Administrator


Sehen Sie sich das Profil von Gerundt an!   Senden Sie eine Private Message an Gerundt  Schreiben Sie einen Gästebucheintrag für Gerundt

Beiträge: 19
Registriert: 15.03.2005

AutoCAD Mechanical 2005/2009
Autodesk Inventor 2009

erstellt am: 24. Feb. 2009 14:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Liebes Forum,

uns ist hier auf der Arbeit ein Fehler in der „FileManager.CopyFile“-Funktion der Inventor API aufgefallen:

Zitat:
Wenn die Quelldatei das „Schreibgeschützt“-Attribut gesetzt hat, stürzt die Funktion mit dem Fehler „Unbekannter Fehler (Ausnahme von HRESULT: 0x80004005 (E_FAIL))“ unter Visual Basic 2005 ab. Wir haben den Fehler sowohl unter Windows XP Professional, also auch Vista Business. Außerdem tritt das Problem unter Visual Basic 6 auf und mit Inventor 2008 und Inventor 2009.

Hier ist ein Beispiel-Quelltext für Visual Basic 2005:

Code:
Dim oApprenticeServer As New Inventor.ApprenticeServerComponent

'oApprenticeServer.FileManager.CopyFile("Z:\docs\public\881951\02\881951_02.iam", "C:\881951_02.iam")
Try
    oApprenticeServer.FileManager.CopyFile("C:\quelle.idw", "C:\ziel.idw")
Catch ex As Exception
    Debug.Print(ex.Message)
    Debug.Print(ex.StackTrace)
End Try


Hier die entsprechende Fehlermeldung:

Zitat:
Eine Ausnahme (erste Chance) des Typs "System.Runtime.InteropServices.COMException" ist in mscorlib.dll aufgetreten.
Falscher Parameter.

  bei System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
  bei Inventor.FileManager.CopyFile(String SourceFullFileName, String DestinationFullFileName, FileManagementEnum FileManagementOption)
  bei InventorTest.Form1.Form1_Load(Object sender, EventArgs e) in C:\Dokumente und Einstellungen\...\InventorTest\Form1.vb:Zeile 9.

Könnt Ihr uns bei unserem Problem helfen? Gibt es einen Trick, wie wir die „FileManager.CopyFile“-Funktion trotz „Schreibschutz“-Attribut der Quelldatei verwenden können?

Mit freundlichen Grüßen,
Tim Gerundt

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daywa1k3r
Moderator
Softwareentwickler




Sehen Sie sich das Profil von daywa1k3r an!   Senden Sie eine Private Message an daywa1k3r  Schreiben Sie einen Gästebucheintrag für daywa1k3r

Beiträge: 3497
Registriert: 01.08.2002

Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570
Laptop: Alienware m17x
Win7, Inventor2012

erstellt am: 24. Feb. 2009 14:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Gerundt 10 Unities + Antwort hilfreich

Hallo Tim,

die VB Unsitte verbreitet sich in .NET leider auch. Mit C# wärst du genötigt auch den dritten Parameter zu berücksichtigen, und da unter Umständen auch kOverwriteReadOnlyFile zu übergeben.

Ein Auszug aus der Hilfedatei:

Code:

Description
Method that copies the specified Autodesk Inventor file (.ipt, .idw, .ipt etc.) from one location to another.
Syntax
Public Sub CopyFile( _
  ByVal SourceFullFileName As String, _
  ByVal DestinationFullFileName As String, _
  Optional ByVal FileManagementOption As FileManagementEnum = kNoForceFile _
)
Parameters
SourceFullFileName
Input String that specifies the full path and filename of the file to copy.
DestinationFullFileName
Input String that specifies the full path and filename in which to place the results of the copy procedure.
FileManagementOption
Member Value Description
kNoForceFile Force option not specified. 0
kForceFile Option to force the deletion if the file is reserved. 1
kOverwriteExistingFile Option to overwrite the existing file at the destination. 32
kOverwriteReservedFile Option to overwrite the existing file at the destination even if reserved. 64
kOverwriteReadOnlyFile Option to overwrite the existing read-only file at the destination 128
kCopyFileMask Option used by CopyFile. 224
kDeleteFileMask Option used by DeleteFile. 1
kMoveFileMask Option used by MoveFile. 225
Input constant that specifies how to handle the results of the file operation.


------------------
Grüße Igor

FX64 Software Solutions - Inventor Tools

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Gerundt
Mitglied
Administrator


Sehen Sie sich das Profil von Gerundt an!   Senden Sie eine Private Message an Gerundt  Schreiben Sie einen Gästebucheintrag für Gerundt

Beiträge: 19
Registriert: 15.03.2005

AutoCAD Mechanical 2005/2009
Autodesk Inventor 2009

erstellt am: 24. Feb. 2009 15:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Den Parameter kOverwriteReadOnlyFile hatte ich schon ausprobiert. Hilft aber leider nicht, wenn die Quelldatei "schreibgeschützt" ist. Jedenfalls bei den 2 Testrechnern, mit den ich es getestet habe. 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daywa1k3r
Moderator
Softwareentwickler




Sehen Sie sich das Profil von daywa1k3r an!   Senden Sie eine Private Message an daywa1k3r  Schreiben Sie einen Gästebucheintrag für daywa1k3r

Beiträge: 3497
Registriert: 01.08.2002

Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570
Laptop: Alienware m17x
Win7, Inventor2012

erstellt am: 24. Feb. 2009 15:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Gerundt 10 Unities + Antwort hilfreich

Genügend Rechte? Kannst du die Datei über Windows Explorer löschen?

------------------
Grüße Igor

FX64 Software Solutions - Inventor Tools

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Gerundt
Mitglied
Administrator


Sehen Sie sich das Profil von Gerundt an!   Senden Sie eine Private Message an Gerundt  Schreiben Sie einen Gästebucheintrag für Gerundt

Beiträge: 19
Registriert: 15.03.2005

AutoCAD Mechanical 2005/2009
Autodesk Inventor 2009

erstellt am: 24. Feb. 2009 15:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Die Dateirechte sind nicht das Problem. Ich habe das ganze lokal auf der Festplatte als Administrator ausgeführt. Und sobald ich das Attribut "Schreibgeschützt" von der Quelldatei nehme, klappt es ohne Probleme.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daywa1k3r
Moderator
Softwareentwickler




Sehen Sie sich das Profil von daywa1k3r an!   Senden Sie eine Private Message an daywa1k3r  Schreiben Sie einen Gästebucheintrag für daywa1k3r

Beiträge: 3497
Registriert: 01.08.2002

Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570
Laptop: Alienware m17x
Win7, Inventor2012

erstellt am: 24. Feb. 2009 15:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Gerundt 10 Unities + Antwort hilfreich

Schon mal so etwas probiert:

Code:

File.SetAttributes("Deine_Datei", FileAttributes.Normal);

bevor du mit Apprentice verschiebst?

------------------
Grüße Igor

FX64 Software Solutions - Inventor Tools

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Gerundt
Mitglied
Administrator


Sehen Sie sich das Profil von Gerundt an!   Senden Sie eine Private Message an Gerundt  Schreiben Sie einen Gästebucheintrag für Gerundt

Beiträge: 19
Registriert: 15.03.2005

AutoCAD Mechanical 2005/2009
Autodesk Inventor 2009

erstellt am: 24. Feb. 2009 16:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Leider muss das Schreibschutz-Attribut bei der Quelldatei gesetzt bleiben. Später soll das Programm von jemanden benutzt werden, der auch auf Dateiebene nur Leserechte hat. Sprich er könnte das Schreibschutz-Attribut gar nicht löschen. 

Für mich sieht es nach einem Fehler in der Inventor API aus. Die Datei wird kopiert (inklusive Schreibschutz-Attribut) und dann stürzt der Befehl ab. Eigentlich müsste jetzt der kOverwriteReadOnlyFile Parameter greifen, aber das tut er leider nicht.

Jetzt könnte ich unter VB.net vielleicht den Fehler abfangen, schliesslich kopiert er die Datei, aber sauber ist das nicht! 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daywa1k3r
Moderator
Softwareentwickler




Sehen Sie sich das Profil von daywa1k3r an!   Senden Sie eine Private Message an daywa1k3r  Schreiben Sie einen Gästebucheintrag für daywa1k3r

Beiträge: 3497
Registriert: 01.08.2002

Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570
Laptop: Alienware m17x
Win7, Inventor2012

erstellt am: 24. Feb. 2009 16:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Gerundt 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Gerundt:
Leider muss das Schreibschutz-Attribut bei der Quelldatei gesetzt bleiben.

Oder wieder gesetzt werden?

Code:

File.SetAttributes("C:\\quelle.idw", FileAttributes.Normal);
oApprenticeServer.FileManager.CopyFile("C:\\quelle.idw", "C:\\ziel.idw")
File.SetAttributes("C:\\quelle.idw", FileAttributes.ReadOnly);


Zitat:
Original erstellt von Gerundt:
Für mich sieht es nach einem Fehler in der Inventor API aus.

Kann ich jetzt leider nicht testen, aber leicht möglich.

------------------
Grüße Igor

FX64 Software Solutions - Inventor Tools

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Gerundt
Mitglied
Administrator


Sehen Sie sich das Profil von Gerundt an!   Senden Sie eine Private Message an Gerundt  Schreiben Sie einen Gästebucheintrag für Gerundt

Beiträge: 19
Registriert: 15.03.2005

AutoCAD Mechanical 2005/2009
Autodesk Inventor 2009

erstellt am: 24. Feb. 2009 16:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Oder wieder gesetzt werden?

Bei mir als Admin würde es klappen, aber hinterher soll das Programm von Benutzer ausgeführt werden, die zur Sicherheit nur Leseberechtigung (auf Dateisystemebene) auf die Dateien haben. Sie könnten also auch über den Explorer nicht das "Schreibgeschützt"-Attribut setzen oder löschen.

Wenn ich die FileCopy-Funktion vom normalen Windows-FileSystemObject verwende, habe ich keine Probleme mit Quelldateien, die das Schreibgeschützt-Attribut haben. Die Datei wird ohne Absturz kopiert. Bei Inventor-Dateien würde ich dann aber Probleme mit den Referenzen bekommen und bin deswegen auf die Inventor-Funktion angewiesen. 

Danke auf jeden Fall schon mal für deine Mühen! 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz