AGB  ·  Datenschutz  ·  Impressum  







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

Geisterjagt

Ein Thema von Edelfix · begonnen am 28. Nov 2023 · letzter Beitrag vom 28. Nov 2023
Antwort Antwort
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
214 Beiträge
 
Delphi 10.4 Sydney
 
#1

Geisterjagt

  Alt 28. Nov 2023, 09:10
Hallo,

ich jage nach Geistern. So fühlt sich aktuell meine Aufgabe an.

Ich betreue ein altes und riesiges Projekt. Jetzt wurde eine Maske / Form umgestaltet.

Seit dem habe ich zwei Komponenten die sich merkwürdig verhalten. Die GroupBox11 und die DBEdit2.

Beide bekommen zu Runtime eine andere Caption. Die Caption enthält Text der igendwo aus dem Untifen des Projektes kommen könnte.

Aber ich komme nicht dahinter an welcher Stelle die Caption geändert wird. Die Suche in allen .pas und .dfm Dateien hat nichts ergeben.

Sobald ich die beiden Komponenten umbenene bleibt die Caption unverändert.

Jemand eine Idee wo ich noch suchen könnte?
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Geisterjagt

  Alt 28. Nov 2023, 09:47
Sind da Umlaute enthalten?
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#3

AW: Geisterjagt

  Alt 28. Nov 2023, 09:47
Unit Vcl.Controls

procedure TControl.SetText

da einen Haltepunkt rein



und vielleicht noch Self.Name = 'ComboBox1' oder Self is TComboBox als Bedingung für diesen Haldepunkt
(das Debug-DCUs natürlich aktivieren)







oooooooder das ins Interface deiner FormUnit, vor die Deklaration der Form.
Delphi-Quellcode:
type
  TComboBox = class(Vcl.Controls.TComboBox)
    procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED; // oder alternativ WM_SETTEXT
    //procedure WMSetText(var Message: TWMSetText); message WM_SETTEXT;
  end;
Delphi-Quellcode:
procedure TComboBox.CMTextChanged(var Message: TMessage);
begin
  inherited; << hier der Haltepunkt
end;
Leider waren weder SetText, noch SetTextBuf, virtual, also nicht direkt überschreibbar , aber
Delphi-Quellcode:
procedure TControl.SetTextBuf(Buffer: PChar);
begin
  Perform(WM_SETTEXT, 0, Buffer);
  Perform(CM_TEXTCHANGED, 0, 0);
end;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (28. Nov 2023 um 10:47 Uhr)
  Mit Zitat antworten Zitat
Kas Ob.

Registriert seit: 3. Sep 2023
346 Beiträge
 
#4

AW: Geisterjagt

  Alt 28. Nov 2023, 09:58
Hi,
There is many cause, but to diagnose we need a lot of context and questions, also there is many ways to capture this, yet again many gaps to find the best and shortest solution.

But first thing comes to my mind:
1) Is there language managing component ?
2) If renaming works, yet i might missing something in translation, both at the same time should be renamed or each renamed will not have the text ? if separately then try to trick the ghost by rename one and add something outlandish with the same name, like put some Indy component and see if it will crash, if that didn't help then make one specific/customized component for one of them with overridden Caption/Text setter and set a break point on it.
..

Hope that helps.
Kas
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#5

AW: Geisterjagt

  Alt 28. Nov 2023, 10:14
Da Du Dich ja für eine numerierte Benennung entschieden hast, hast Du vermutlich auch irgendwo eine Schleife, in der Du dieses "Feature" verwendest. Such also nach etwas, daß so ähnlich aussieht wie FindComponent("GroupBox" + i). Darum passiert auch nichts, sobald Du den Komponenten korrekte Namen gibst.
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
214 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Geisterjagt

  Alt 28. Nov 2023, 11:20
Das Rätzel konnte gelöst werden.

Eure Tipps wahren genau richtig. Es gibt eine alte „Translate Form“ Funktion. In der Funktion gibt es eine Schleife durch alle Komponenten der Form. Anscheinen ist die Funktion so ungünstig programmiert das sie die Caption mit der eingestellten Sprache überschreibt, sobald die Komponente gefunden wurde ohne zu berücksichtigen ob die original Caption noch passt. Altlasten.

Vielen Dank für die Hilfe.
  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 00:05 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