Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   EMB DCE 12 - Resourcen-Datei wird immer überschrieben und *keine* STRINGTABLE möglich (https://www.delphipraxis.net/215941-emb-dce-12-resourcen-datei-wird-immer-ueberschrieben-und-%2Akeine%2A-stringtable-moeglich.html)

paule32.jk 29. Sep 2024 10:59

EMB DCE 12 - Resourcen-Datei wird immer überschrieben und *keine* STRINGTABLE möglich
 
Hallo,
in Delphi selbst kann ich keine Stringtable's in den Resourcen-Editor hinzufügen.
Trage ich weitere Einträge per Hand in die .rc Datei, wird diese beim nächsten öffnen des Projektes überschrieben, so dass der ursprüngliche Text in der .rc Datei steht. Irgendwo muss Delphi eine Kopie anlegen, damit die .rc Datei geschrieben wird ???

wenn ich nun STRINGTABLE's verwenden möchte:
Code:
102 STRINGTABLE
BEGIN
  102, "Mein Control Applet"
  103, "Dieses Applet demonstriert, wie man eine CPL-Datei in Delphi erstellt."
END
erscheint beim Aufruf des Resourcen-Compilers rc.exe die Meldung:

Code:
Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
Copyright (C) Microsoft Corporation.
All rights reserved.

newBDE.rc(1) : error RC2255 : named STRINGTABLEs are not allowed
ist das ein Windows-Problem, weil ich habe noch den Visual Studio C++ Community installiert ?
oder werden StringTables nicht mehr unterstützt.

peterbelow 29. Sep 2024 13:16

AW: EMB DCE 12 - Resourcen-Datei wird immer überschrieben und *keine* STRINGTABLE mög
 
Leg eine neue .rc-Datei an, mit einem anderen Dateinamen als die des Projektes, und binde sie mittels einer $R-Anweisung in einer deiner Kode-Units ein. Du kannst auch die Strings selbst in einer Unit als Resourcestring deklarieren, hast dann aber keine Kontrolle über die verwendeten IDs.
Sie werden im Kode dann wie normale als Const deklarierte Strings verwendet.

Eigene STRINGTABLE-Resourcen anzulegen ist problematisch, da ihre IDs mit vom Compiler erzeugten Resourcen kollidieren können. Wenn man sie unbedingt braucht, z. B. weil sie von einer anderen Anwendung auch verwendet werden, sollte man sie in eine DLL auslagern, die nur Resourcen enthält, und halt von dieser laden (DLL laden per LoadLibraryEx mit LOAD_LIBRARY_AS_DATAFILE flag).

jaenicke 29. Sep 2024 13:26

AW: EMB DCE 12 - Resourcen-Datei wird immer überschrieben und *keine* STRINGTABLE mög
 
Zitat:

Zitat von paule32.jk (Beitrag 1541634)
ist das ein Windows-Problem, weil ich habe noch den Visual Studio C++ Community installiert ?
oder werden StringTables nicht mehr unterstützt.

Nein, die Datei ist schlicht falsch. Korrekt sieht diese so aus:
Code:
STRINGTABLE
BEGIN
  102 "Mein Control Applet"
  103 "Dieses Applet demonstriert, wie man eine CPL-Datei in Delphi erstellt."
END
Über den Ressourceneditor von Delphi im Menü Projekt kannst du die Datei zwar hinzufügen, aber da dieser Editor den Typ STRINGTABLE nicht unterstützt, wird diese bei einem erneuten Aufruf dort nicht angezeigt. Funktionieren tut es aber.
Du kannst die Datei aber auch einfach in die Projektverwaltung auf das Projekt ziehen und so hinzufügen, dann kompiliert Delphi die Ressource ebenfalls automatisch.

Egal, ob ich die Datei dann in Delphi verändere oder direkt in einem anderen Editor, die Änderungen werden bei mir korrekt einkompiliert und von LoadString geladen.

himitsu 29. Sep 2024 14:40

AW: EMB DCE 12 - Resourcen-Datei wird immer überschrieben und *keine* STRINGTABLE mög
 
Zitat:

Zitat von jaenicke (Beitrag 1541636)
Nein, die Datei ist schlicht falsch.

Da bin ich mir nicht ganz sicher.
Es gibt mehrere Ressourcen-Compiler, welche teilweise eine unterschiedliche Syntax nutzen.
[add]
Das Komma ist bei beiden RC-Compilern optional,
aber die StringTable kann/darf keinen Namen besitzen (die 102 ist also der Fehler)
[/add]

witzige Sache:
* der Delphi- ähhh Borland-Ressourcencompiler "brcc32.exe" nutzt standardmäßig eine mehr c-ige Syntax mit geschweiten Klammern {}
* der Windows- Microsoft-Ressourcencompiler "rc.exe" nutzt standardmäßig eine mehr pascal-ige Syntax mit BEGIN+END :lol:
* aber Beide verstehen Beides (fällt vor allem auf, wenn man die Hilfe liest ... MSDN nutzt überall BEGIN und DocWiki die { )



Innerhalb der .DPK oder .DPR kann man Delphi auch automatisch die .RC kompilieren lassen.
Delphi-Quellcode:
{$R datei.res datei.rc}


Leider kann der zweite Parameter überall angegeben werden, auch in .PAS, wobei er dort bösartig einfach ignoriert wird.
Wenn es klappt, dann siehst du auch im Compiler-Log (Erzeugen), wie vor dem eigentlichen Kompilieren diese Ressource erstellt wird.

Will/Kann man nur RES direkt angeben, dann mußt du selbst die .RC kompilieren oder anders erstellen.
Delphi-Quellcode:
{$R datei.res}

Also vorher mit einem der beiden mitgelieferten RessourcenCompiler (rc.exe oder brcc32.exe) kompilieren
oder z.B. mit einem fremden Ressourcen-Editor erstellen.

paule32.jk 29. Sep 2024 15:27

AW: EMB DCE 12 - Resourcen-Datei wird immer überschrieben und *keine* STRINGTABLE mög
 
ok funktioniert soweit gut - Danke für Eure Tipps.

Den Admin dieses Boards mal kontaktieren, damit die Werbung unten diesen Post entfernt wird.
ist ja schlimm, jetzt kurz vor Weihnachten.

jaenicke 29. Sep 2024 19:18

AW: EMB DCE 12 - Resourcen-Datei wird immer überschrieben und *keine* STRINGTABLE mög
 
Zitat:

Zitat von himitsu (Beitrag 1541638)
Es gibt mehrere Ressourcen-Compiler, welche teilweise eine unterschiedliche Syntax nutzen.

Das ist richtig, aber entweder man verwendet nur die fertige .res oder man kompiliert mit Bordmitteln. Wenn man Bordmittel verwendet, ist eine andere Syntax falsch, das meinte ich.

himitsu 29. Sep 2024 19:42

AW: EMB DCE 12 - Resourcen-Datei wird immer überschrieben und *keine* STRINGTABLE mög
 
Joar, wenn man es selbst kompiliert, dann ist die Syntax egal, da ja nur das Ergennis (RES) zählt.
Und da er ja ursprünglich selbst kompilieren wollte. :D


@Spam: Du kannst den Report-Knopf benutzen. (OK, jetzt nicht mehr, weil ihn schon jemand genutzt hat :angle2:)


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