AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Compilieren der Standard-Packages

Ein Thema von musicman56 · begonnen am 6. Nov 2012 · letzter Beitrag vom 6. Nov 2012
Antwort Antwort
musicman56
(Gast)

n/a Beiträge
 
#1

Compilieren der Standard-Packages

  Alt 6. Nov 2012, 11:46
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.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Compilieren der Standard-Packages

  Alt 6. Nov 2012, 11:48
Es reicht, wenn die dcu gefunden wird.
Markus Kinzler
  Mit Zitat antworten Zitat
musicman56
(Gast)

n/a Beiträge
 
#3

AW: Compilieren der Standard-Packages

  Alt 6. Nov 2012, 12:06
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
  Mit Zitat antworten Zitat
FrankJ28

Registriert seit: 7. Apr 2008
211 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Compilieren der Standard-Packages

  Alt 6. Nov 2012, 12:12
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
"Sage was du tust, und tue was du sagst"
Johannes Rau
  Mit Zitat antworten Zitat
musicman56
(Gast)

n/a Beiträge
 
#5

AW: Compilieren der Standard-Packages

  Alt 6. Nov 2012, 12:34
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]

Geändert von musicman56 ( 6. Nov 2012 um 12:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.012 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: Compilieren der Standard-Packages

  Alt 6. Nov 2012, 12:56
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.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie ( 6. Nov 2012 um 13:04 Uhr)
  Mit Zitat antworten Zitat
musicman56
(Gast)

n/a Beiträge
 
#7

AW: Compilieren der Standard-Packages

  Alt 6. Nov 2012, 13:06
Hi Stefan,


wooow....das funzt. Wieder was dazu gelernt

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]

Geändert von musicman56 ( 6. Nov 2012 um 13:08 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:51 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