![]() |
Exe-Icon bei Delphi-Konsolenanwendung ?
Kann man für eine Delphi-Konsolenanwendung ein Icon festlegen ? Ich wollte das nämlich heute machen, und über Projekt -> Optionen -> Anwendung gehen, aber dort ist alles grau. Ich kann also kein Icon hinzufügen.
Zurzeit ist aber ein Delphi-Icon eingetragen, und das sieht man auch im Windows Explorer. Ich wollte eigentlich den radikalen Weg vermeiden, mit einem Ressource-Editor das Bild auszutauschen. Wer kann helfen ? |
Re: Exe-Icon bei Delphi-Konsolenanwendung ?
Delphi-Quellcode:
Füge die Zeile 5 deinem Projekt hinzu, dann sollte es gehen.
program Project2;
{$APPTYPE CONSOLE} {$R *.res} uses SysUtils; begin { TODO -oUser -cConsole Main : Hier Code einfügen } end. |
Re: Exe-Icon bei Delphi-Konsolenanwendung ?
Du meinst die Einbindung der Res-Datei. Das habe ich gemacht, woraufhin die IDE meinte, die Datei existiert nicht und wird erstellt.
Folglich verwende ich sie jetzt im Projekt und kann auch etwa Versionsdetails darin abspeichern, aber keine ICO Datei. |
Re: Exe-Icon bei Delphi-Konsolenanwendung ?
Erstell eine Textdatei "Icon.rc":
Code:
Die Datei wandelst Du in eine .res um (Eingebeaufforderung oder Batchdatei):
100 ICON DISCARDABLE "AppIcon.ico"
Code:
Und bindest sie ins Programm ein:
brcc32 Icon
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE} {$R Icon.res} uses Windows; begin end. |
Re: Exe-Icon bei Delphi-Konsolenanwendung ?
Tatsächlich, das hat funktioniert. Danke.
Was mich aber wundert, ist der Umstand, dass ich in den Projektoptionen trotzdem nichts am Icon ändern kann. Nicht dass ich das jetzt muss, ich will aber verstehen, warum mir dieser Weg bei Consolenapplikationen verbaut wird ? Oder vielleicht ist es nur meine Applikation. |
Re: Exe-Icon bei Delphi-Konsolenanwendung ?
"Das ist eben so"
Hab mich inzwischen einfach dran gewöhnt und mach es immer so - auch bei VCL-Anwendungen. Mit dem Icon in der Anwendungsressource gibt es öfter mal Probleme, besonders beim Austausch von Anwendungen zwischen Delphi <=7 und Delphi 2005-2007/TD. |
Re: Exe-Icon bei Delphi-Konsolenanwendung ?
Eine Sache, die hier leider nicht ganz funktioniert, ist das gleichzeitige Einbinden einer Res-Datei für das Icon sowie einer Applikations-Res-Datei für die Versionsinformationen.
Ich habe also folgenden Header im Delphi-Projekt:
Delphi-Quellcode:
Und als Ergebnis besitzt die Exe-Datei zwar die Versionsinformationen, aber nicht das Icon. Vertausche ich die beiden Res-Zeilen, habe ich den gleichen Effekt.
PROGRAM PrgName;
{$APPTYPE CONSOLE} {$R *.res} //Res-Datei für Versionsinformationen {$R Icon.res} //Res-Datei für Icon Sobald ich die Zeile:
Delphi-Quellcode:
entferne, habe ich wieder das Icon, aber keine Versionsinformationen.
{$R *.res} //Res-Datei für Versionsinformationen
Wie kann ich bei einer Konsolenanwendung beides, also Icon und Versionsinformationen integrieren ? |
Re: Exe-Icon bei Delphi-Konsolenanwendung ?
man kann sich auch eine Resource für alles erstellen.
ich selber verwende die Projektoptionen diesbezüglich garnicht mehr. z.B.: Resource.res = Icon + Versionsinfo + XP-Manifest
Code:
(wobei ich selber sogar die Icon Daten direkt mit in .RC drin hab ... also nicht mehr als extra .ico-Datei)
#define RT_MANIFEST 24
#define DS_SETFOREGROUND 0x200L #define DS_SHELLFONT (DS_SETFONT | DS_FIXEDSYS) LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL 1 ICON "icon.ico" VS_VERSION_INFO VERSIONINFO FILEVERSION 2,1,0,18 PRODUCTVERSION 2,1,0,18 FILEFLAGSMASK 0x3fL FILEFLAGS 0x00L FILEOS VOS_NT | VOS__WINDOWS32 FILETYPE VFT_APP FILESUBTYPE 0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904e4" // LANG_ENGLISH, SUBLANG_ENGLISH_US, charset:Multilingual BEGIN VALUE "CompanyName", "FNS Enterprize's\0" VALUE "FileVersion", "v2.1 (18) beta\0" VALUE "LegalCopyright", "© 1997–2008 by FNS Enterprize's™ (himitsu)\0" VALUE "LegalTrademarks", "FNS Enterprize's™\0" VALUE "Comments", "FreeWare\0" VALUE "Copyright", "© 2003–2008 by himitsu @ Delphi–PRAXiS\0" VALUE "Languages", "english\0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", LANG_ENGLISH | (SUBLANG_ENGLISH_US << 10), 1252L // carset:Multilingual END END 1 RT_MANIFEST BEGIN "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?>\r\n", "\r\n", "<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersion=\"1.0\">\r\n", " <assemblyIdentity\r\n", " type = \"win32\"\r\n", " name = \"Borland.Delphi.XP-Application\"\r\n", " version = \"1.1.0.0\"\r\n", " processorArchitecture = \"x86\"\r\n", " />\r\n", " <description></description>\r\n", " <dependency optional=\"yes\">\r\n", " <dependentAssembly>\r\n", " <assemblyIdentity\r\n", " type = \"win32\"\r\n", " name = \"Microsoft.Windows.Common-Controls\"\r\n", " version = \"6.0.0.0\"\r\n", " language = \"*\"\r\n", " processorArchitecture = \"x86\"\r\n", " publicKeyToken = \"6595b64144ccf1df\"\r\n", " />\r\n", " </dependentAssembly>\r\n", " </dependency>\r\n", "</assembly>\r\n" END übrig bleibt nur noch ein
Delphi-Quellcode:
{$R Resource.res}
|
Re: Exe-Icon bei Delphi-Konsolenanwendung ?
Hi,
Schnell folgendes einfügen:
Delphi-Quellcode:
Dann über Projektoptionen Symbol einstellen und Forms und Application.xxx wieder entfernen - fertig.
program xxx;
uses Forms, //<--Forms ...; {$APPTYPE CONSOLE} {$R *.RES} begin //Application.xxx: Application.Initialize; Application.Title := ''; Application.Run; ... weiterer Quelltext end. Mfg FAlter [edit] end. natürlich [/edit] |
Re: Exe-Icon bei Delphi-Konsolenanwendung ?
Der Trick von FAlter funktioniert wirklich und war mir bis heute noch unbekannt. Interessant, wie sich die Delphi IDE austricksen lässt. Vielen Dank.
@himitsu: Daran habe ich auch schon gedacht, nur hat mich der Aufwand abgeschreckt, für jedes Programmrelease eine separate Ressourcen-Datei anpassen zu müssen. Das muss irgendwie über eine Oberfläche wie die Delphi IDE machbar sein. Dank des Tricks ja auch kein Problem. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:36 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