Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Compilieren der Standard-Packages (https://www.delphipraxis.net/171423-compilieren-der-standard-packages.html)

musicman56 6. Nov 2012 11:46

Compilieren der Standard-Packages
 
Hallo,

ich habe XE2 Professional und folgendes Problem: In den DB-Grid's wird bei den Boolean-feldern "Wahr" und "Falsch" angezeigt. Das möchte ich mit "Ja" und "Nein" ersetzen. Also "Data.DBConsts" geöffnet, Text geändert, und versucht das Package neu zu compilieren.

Pustekuchen, dclbde160.bpl kann ich nicht neu compilieren, weil die dpk nicht gefunden wird. Ist auch nirgendwo vorhanden. In den Versions-Informationen auf den Embarcadero Seiten hab ich keinen Hinweis gefunden, ob und wenn ja in welchen Editionen der Quelltext der dpk's enthalten ist. Oder muss man die separat downloaden? Oder soll man die bpl's gar nicht neu compilieren, weil's irgendwelche Nebeneffekte geben kann... oder was auch immer?

Mit allen vorherigen Versionen die ich hatte (zuletzt 2007) war's ohne Probleme möglich.

mkinzler 6. Nov 2012 11:48

AW: Compilieren der Standard-Packages
 
Es reicht, wenn die dcu gefunden wird.

musicman56 6. Nov 2012 12:06

AW: Compilieren der Standard-Packages
 
Hallo Markus,

vielen Dank für deine schnelle Antwort. Auf diesen Trichter wär ich ja auch schon gekommen, aber, egal was ich mache, die dcu wird nicht erstellt. Ich hab ein neues Projekt aufgemacht, ein DBGrid plaziert, Data.DBConsts bearbeitet, "Alle Projekte erzeugen"...nix passiert, nirgends eine "DBGrids.dcu" zu finden. Ich glaub, obwohl ich so lange schon mit Delphi arbeite, irgendwas hab ich noch nicht ganz kapiert :oops:

FrankJ28 6. Nov 2012 12:12

AW: Compilieren der Standard-Packages
 
Hallo,
die Darstellung des boolschen Feldes kanst Du doch auch über das Property "DisplayValues" des zugehörigen Feldes lösen. Ja;Nein wäre da deine Einstellung.
Ciao
Frank

musicman56 6. Nov 2012 12:34

AW: Compilieren der Standard-Packages
 
Hallo Frank,

joooo...möglich, aber es sind 90+ Tables (also ca. 1000 Displaylabels zum durchsehen) und ebenso viele Grids, und nicht zu allen Datenbanken hab ich persistente Felder, weil die Datenbankfelder teilweise vom User selber bestimmt werden können. Da war eben die bisherige Lösung mit dem Neucompilieren die eleganteste, schnellste und sicherste Variante.

[Edit]
Ein weiteres vielaus größeres Problem (soeben erst bemerkt) kommt hinzu: In den Formularen (List&Label) deklariere ich teilweise die Boolean-Felder als string, um in den Listen eben "Ja" und "Nein" zu bekommen. Wenn nun Anwender Listen erstellt haben mit Filtern/Abfragen zu Boolean-Feldern, dann funktionieren diese Listen nicht mehr. Field.asString gibt nämlich dann auch "Wahr" und "Falsch" zurück, und nicht den Display-Label-Wert. Es führt also kein Weg daran vorbei...
[/Edit]

Stevie 6. Nov 2012 12:56

AW: Compilieren der Standard-Packages
 
Folgende Lösung funktioniert, wenn du deine Anwendung ohne runtime Packages buildest:

Füge die geänderte DBConsts einfach explizit deinem Projekt hinzu.

Am einfachsten geht das, indem du die geöffnete DBConsts.pas oben am Tab greifst und sie in dein Projekt im Projektmanager ziehst.

Dann wird nämlich beim Kompilieren diese Datei neu kompiliert und nicht die dcu benutzt, die Bestandteil der Delphi Installation ist.



Alternative ohne Veränderung der Delphi Sourcen:

Folgende Unit in dein Projekt einbinden:

Delphi-Quellcode:
unit DBConstsChange;

interface

implementation

uses
  DBConsts,
  Windows;

procedure ChangeResourceString(ResString: PResStringRec; NewValue: PChar);
var
  oldProtect: DWORD;
begin
  if VirtualProtect(ResString, SizeOf(ResString^), PAGE_EXECUTE_READWRITE, @oldProtect) then
  begin
    ResString.Identifier := Integer(NewValue);
    VirtualProtect(ResString, SizeOf(ResString^), oldProtect, @oldProtect);
  end;
end;

initialization
  ChangeResourceString(@STextFalse, 'Nein');
  ChangeResourceString(@STextTrue, 'Ja');

end.
Ich gehe mal davon aus, dass du keine Lokalisierung hast, denn sonst solltest du das mit dem 'Ja'/'Nein' dort lösen.

musicman56 6. Nov 2012 13:06

AW: Compilieren der Standard-Packages
 
Hi Stefan,


wooow....das funzt. Wieder was dazu gelernt :-D

Vielen herzlichen Dank für diesen megageilen Tipp.

[EDIT]
Hat sich jetzt überschnitten....

uses
...
Data.DBConsts in 'c:\program files (x86)\embarcadero\rad studio\9.0\source\data\DE\Data.DBConsts.pas';
...

Das meinte ich mit "es funzt"
[/EDIT]


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