Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   C# Der Typ oder Name 'DllImport' konnte nicht gefunden werden (https://www.delphipraxis.net/66822-der-typ-oder-name-dllimport-konnte-nicht-gefunden-werden.html)

Chewie 4. Apr 2006 21:12


Der Typ oder Name 'DllImport' konnte nicht gefunden werden
 
Ich will Icons aus DLLs laden, dazu verwende ich folgende kleine Klasse:

Code:
using System;
using System.Drawing;

namespace RunAsTray.Util

   
   /// <summary>
   /// Description of IconLoader.
   /// </summary>
   public class IconLoader
   {
      [DllImport("shell32.dll")]
      private static extern IntPtr ExtractIcon(int hInst, string file, int index);
      
      
      public static Icon load(string filename, int idx) {
         return Icon.FromHandle(ExtractIcon(GetModuleHandle(String.Empty), filename, index);
      }
   }
}
Doch der Compiler bringt mir folgende Meldung:
Zitat:

Der Typ oder Name 'DllImport' konnte nicht gefunden werden. Möglicherweise fehlt eine Anweisung oder ein Assemblyverweise.
Warum um alles in der Welt versucht der Compiler, das Attribut (so heißt das doch bei .NET, oder?) als Typ aufzufassen und nicht als Attribut??

Muss ich da noch irgendwas zusätzlich einstellen?

Chewie 4. Apr 2006 21:22

Re: Der Typ oder Name 'DllImport' konnte nicht gefunden werd
 
Verdammt, wieder das alte Spiel:

Ich hab die Lösung gefunden...
Man muss noch einen Namespace einbinden:

Code:
using System;
using System.Drawing;
using System.Runtime.InteropServices;

namespace RunAsTray.Util

   
   /// <summary>
   /// Description of IconLoader.
   /// </summary>
   public class IconLoader
   {
      [DllImport("shell32.dll")]
      private static extern IntPtr ExtractIcon(int hInst, string file, int index);
      
      
      public static Icon load(string filename, int idx) {
         return Icon.FromHandle(ExtractIcon(GetModuleHandle(String.Empty), filename, index));
      }
   }
}

Elvis 4. Apr 2006 22:40

Re: Der Typ oder Name 'DllImport' konnte nicht gefunden werd
 
Zitat:

Zitat von Chewie
Warum um alles in der Welt versucht der Compiler, das Attribut (so heißt das doch bei .NET, oder?) als Typ aufzufassen und nicht als Attribut??

Hi Chewie :hi:

DllImportAttribute IST eine Klasse. Wobei Nachfahren von Attribute ein wenig besonders behandelt werden. ;)
Präventiv, bevor du in weitere Probleme rennst:
Was du da über die Methode gesetzt hast ist im Prinzip ein call auf den Constructor von DllImportAttribute. Das ganze muss konstant zur Compile time sein, damit sichergestellt werden kann, dass zur Laufzeit sehr schnell Instanzen davon angelegt werden können. ;).


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:22 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