Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Exe-Icon bei Delphi-Konsolenanwendung ? (https://www.delphipraxis.net/112613-exe-icon-bei-delphi-konsolenanwendung.html)

devidespe 24. Apr 2008 11:19


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 ?

Luckie 24. Apr 2008 11:26

Re: Exe-Icon bei Delphi-Konsolenanwendung ?
 
Delphi-Quellcode:
program Project2;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  SysUtils;

begin
  { TODO -oUser -cConsole Main : Hier Code einfügen }
end.
Füge die Zeile 5 deinem Projekt hinzu, dann sollte es gehen.

devidespe 24. Apr 2008 12:36

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.

Daniel Schuhmann 24. Apr 2008 13:15

Re: Exe-Icon bei Delphi-Konsolenanwendung ?
 
Erstell eine Textdatei "Icon.rc":

Code:
100  ICON DISCARDABLE "AppIcon.ico"
Die Datei wandelst Du in eine .res um (Eingebeaufforderung oder Batchdatei):

Code:
brcc32 Icon
Und bindest sie ins Programm ein:

Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

{$R Icon.res}
uses
  Windows;

begin

end.

devidespe 24. Apr 2008 13:29

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.

Daniel Schuhmann 24. Apr 2008 16:22

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.

devidespe 5. Mai 2008 11:02

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:
PROGRAM PrgName;

{$APPTYPE CONSOLE}

{$R *.res}                   //Res-Datei für Versionsinformationen

{$R Icon.res}                //Res-Datei für Icon
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.

Sobald ich die Zeile:

Delphi-Quellcode:
{$R *.res}                   //Res-Datei für Versionsinformationen
entferne, habe ich wieder das Icon, aber keine Versionsinformationen.

Wie kann ich bei einer Konsolenanwendung beides, also Icon und Versionsinformationen integrieren ?

himitsu 5. Mai 2008 11:17

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:
#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
(wobei ich selber sogar die Icon Daten direkt mit in .RC drin hab ... also nicht mehr als extra .ico-Datei)

übrig bleibt nur noch ein
Delphi-Quellcode:
{$R Resource.res}

FAlter 5. Mai 2008 11:23

Re: Exe-Icon bei Delphi-Konsolenanwendung ?
 
Hi,

Schnell folgendes einfügen:

Delphi-Quellcode:
program xxx;

uses
  Forms, //<--Forms
  ...;

{$APPTYPE CONSOLE}

{$R *.RES}

begin
  //Application.xxx:
  Application.Initialize;
  Application.Title := '';
  Application.Run;
 
 ... weiterer Quelltext
end.
Dann über Projektoptionen Symbol einstellen und Forms und Application.xxx wieder entfernen - fertig.

Mfg
FAlter
[edit] end. natürlich [/edit]

devidespe 5. Mai 2008 11:28

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 22:41 Uhr.
Seite 1 von 2  1 2      

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