AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Änderungen in Units werden nicht erkannt
Thema durchsuchen
Ansicht
Themen-Optionen

Änderungen in Units werden nicht erkannt

Ein Thema von cckLoud · begonnen am 11. Sep 2021 · letzter Beitrag vom 14. Sep 2021
Antwort Antwort
Seite 1 von 2  1 2      
cckLoud

Registriert seit: 19. Nov 2020
Ort: Worms
44 Beiträge
 
Delphi 10.3 Rio
 
#1

Änderungen in Units werden nicht erkannt

  Alt 11. Sep 2021, 02:53
Ich ändere in einem externen Programm den Code von Units.
Hierbei werden irgendwelche Res-Dateien erzeugt und zum Einbinden in die Unit wird der entsprechende Code ({$R <Name der generierten Datei>.RES})in die Unit geschrieben (hierzu lese ich den Code in eine Stringlist, suche die Position, an der eingefügt wird, füge ein und speichere per SaveToFile), die dann bei der nächsten Übersetzung mit eingebunden wird.

Das funktioniert auch alles, aber folgendes Problem: wenn ich das Projekt, zu dem die geänderte Unit gehört, in der IDE angezeige, erkennt D10.3 diese Änderung nicht. Es erfolgt keine Anzeige der Art "Unit hat sich geändert, soll sie neu geladen werden", sie wird natürlich auch nicht im Editor angezeigt und auch beim Übersetzen wird treu und brav der "alte" Code verwendet. Offensichtlich wird der Quellcode gepuffert und es wird die Änderung nicht erkannt (das Änderungsdatum wird geändert, im Explorer sichtbar). Erst wenn ich D neu starte oder zwischenzeitlich ein anderes Projekt öffne, ist der neue Code da (klar, dann wird alles neu geladen). Das ist ziemlich nervig, weils viel Zeit kostet (ich werde ca. 200 von 500 Untist gearbeiten müssen)!

Daher meine Frage: wie kriege ich D dazu, einzelne Units neu zu laden? Keine programmierte Funktion, sondern einfach eine Tastenkombination oder so, die aktualisiert?

Vielleicht kann ja einer helfen!

cckloud
Klaus Kaiser
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Änderungen in Units werden nicht erkannt

  Alt 11. Sep 2021, 11:11
Und du bist sicher, dass du den Fokus zwischendurch von Delphi weg änderst und dann beim Fokussieren keine Änderung erkannt wird?

Funktioniert das in Tools wie Notepad++ denn?
Da wird die entsprechende API von Windows verwendet.

Seit Windows 10 hat das bei mir überall gut funktioniert. Vielleicht funkt ein Virenscanner dazwischen?
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Änderungen in Units werden nicht erkannt

  Alt 11. Sep 2021, 11:28
Das funktioniert bei mir leider auch nur meistens, und nicht immer (Delphi 10.0 Seatle).
Ich bin der Sache nie auf den Grund gegangen, aber du könntest einmal versuchen
  • Nicht nur den "Geändert am"-Zeitstempel, sondern auch den "Erstellt am"-Zeitstempel zu aktualisieren. Notfalls halt die .pas-Datei durch dein Programm löschen und neu schreiben
  • Im Projektverzeichnis eine gleichnamige .dcu-Datei suchen und diese löschen. Dann wäre die IDE auf jeden Fall gezwungen die Unit neu zu kompilieren (und wahrscheinlich auch die .pas-Datei neu einzulesen)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Änderungen in Units werden nicht erkannt

  Alt 11. Sep 2021, 11:43
Im Projektverzeichnis eine gleichnamige .dcu-Datei suchen und diese löschen. Dann wäre die IDE auf jeden Fall gezwungen die Unit neu zu kompilieren (und wahrscheinlich auch die .pas-Datei neu einzulesen)
Das wird nichts helfen, da der Editierpuffer verwendet wird. Wenn du das nicht eingestellt hast, wird eine Unit ja vor dem Kompilieren nicht gespeichert. Entsprechend muss der Inhalt aus der IDE verwendet werden.

Manuell neu eingelesen wird, wenn man ganz einfach das Projekt einmal schließt und wieder öffnet.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Änderungen in Units werden nicht erkannt

  Alt 11. Sep 2021, 13:46
Man könnte aber auch via OTA selber die geöffneten Dateien im EditBuffer bearbeiten, dann muß nix neu geladen werden.

Aber was ich nicht verstanden hab, ich dachte du wolltest RESsourcen ändern ... was wird denn dabei nun sändig auch an den PAS rumgefummelt?
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Änderungen in Units werden nicht erkannt

  Alt 11. Sep 2021, 15:08
Ist die Unit im Delphi-Editor geöffnet?
Wenn sie dort nicht geöffnet ist könnte es sein, dass die Änderung nicht erkannt wird (auch nicht mit F9).
Dann könnte "Projekt erzeugen" helfen.

In Delphi 7 kann das aber grundsätzlich auch noch anders funktioniert haben als heute.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
cckLoud

Registriert seit: 19. Nov 2020
Ort: Worms
44 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Änderungen in Units werden nicht erkannt

  Alt 11. Sep 2021, 16:57
Danke für die vielen Antworten!

Ich möchte zunächst etwas genauer erklären, was ich mache.
Ich habe (bzw. bin noch dabei) einen Wrapper für Stringrids geschrieben. Der erlaubt es mir, wesentlich komfortabler mit den Grids umzugehen. So kann ich zB Spalten über einen Namen ansprechen statt über den Index, kann spaltenweise Datentpyp (zB. Gleitkomma) und Formatierungen vergeben. Zellen kann ich in der Art "Cell.asInteger" ansprechen; weiterhin werden Funktionen zur Verfügung gestellt, die man beim Stringrid schmerzlich vermisst wie Zeile löschen, austauschen, Spaltensummen bilden uvam.

Da mir das nicht als Component-Editor gelungen ist, gibts da ein Hilfsprogramm. Darin "baue" ich mein Grid so wie ich es brauche, mit Spaltenüberschriften usw. Aus diesen Definitonen wird dann eine RES-Datei erstellt, die dann mit diesem Programm auch in die Unit eingetragen werden kann, die das Grid nutzt.

Und genau hier habe ich das Problem. Wenn ich gerade an einer Unit mit Grid arbeite, dann rufe ich parallel zu Delphi das Hilfsprogramm auf, schustere mir das Grid zurecht und lasse mir das die Res-Datei erstellen und in die Unit eintragen. Allein, im D10-Quellcode-Editor erscheint die Änderung nicht. Egal, was ich auch mache (zB. das Fenster schliessen und wieder öffnen), der geänderte Code kommt nicht. Erst wenn ich D10 schliwsse und neu öffne oder zwischendurch ein anderes Projekt öffne, funktionierts.

@ stahli: natürlich sind die entsprechenden Units geöffnet. Aber auch wenn nicht - das Ergebnis bleibt das gleiche...

(folgende antworten an die verfasser im umgekehrter reihenfolge des eingangs...)

@ himitsu: ota sagt mir im Moment nix. Aber ich bezweifle, dass dieser Aufwand grössere Vorteile bringen wird. Und ja, es handelt sich um Resourcen, die nicht so direkt mit dem Programmcode zu tun haben. Aber wie kriege ich die Eintragung "{$R <Name der generierten Datei>.RES}" in die Unit? Das ginge sicher auch manuell, aber ich bin faul und überhaupt, wofür habe ich denn einen Computer?

@ jaenicke
Hallo jaenicke, schön zu sehen, dass du nach den turbulenten Delphi-Treff-Zeiten noch aktiv bist! und du hast recht, so wies aussieht übersetzt Delphi mit den gepufferten Dateien...

Und ja, der Fokus hat zwischendurch gewechselt. Nebenbei: zZ. arbeite nich mit 2 D10-Instanzen, einmal das Hilfsprogramm einmal die Anwendung mit den Grids. In beiden ist das XGrid-object zwecks beschleunigter Fehlerbehebung angezeigt. Da werden Änderungen von der Gegenseite erkannt. Auch Notepad++ erkennt die die Änderungen wg/Res und fordert zun Neuladen auf...
Und nein, ein Virenscanner funkt niht dazwischen. Ich habr nur die Standard-Win-Sicherungen drin...

@ Der schöne Günther
den "geändert am"-Zeitstempel aktualisiere (aktualisierte)ich selbst, da ich dem savetofile nicht traute. Mittlerweile hat sich herausgestellt, dass dieses nicht gar schuld war am nicht geänderten "geändert am"-Zeitstempel, das war ein Prgrammfehler.

Den "Erstellt am"-Zeitstempel braucht ich später noch für meine Versionsverwaltung, da werde ich auf keinen fall was ändern!
Klaus Kaiser
  Mit Zitat antworten Zitat
cckLoud

Registriert seit: 19. Nov 2020
Ort: Worms
44 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Änderungen in Units werden nicht erkannt

  Alt 11. Sep 2021, 17:33
Alles zurück! Seit gerade eben werde ich von D zum Update aufgefordert!!!

Warum auch immer, ich habe zwischenzeitlich nix, aber auch gar nix geändert, ich habe noch nicht mal D neu gestartet...

Es hat sich wieder bewahrheitet: nur Gott versteht (Win oder D) 10!

Trotzdem vielen Dank für euere Mühe!
Klaus Kaiser
  Mit Zitat antworten Zitat
cckLoud

Registriert seit: 19. Nov 2020
Ort: Worms
44 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Änderungen in Units werden nicht erkannt

  Alt 11. Sep 2021, 18:18
Noch eine Erkenntnis: D10 scheint auch die Res-Datei zu puffern, auch wenn die gar nicht "zur Bearbeitung" steht. Jedenfalls werden Änderungen auch hier erst dann wirksam, wenn das Projekt geschlossen wird!
Klaus Kaiser
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: Änderungen in Units werden nicht erkannt

  Alt 12. Sep 2021, 09:06
Ist die .res Datei eigentlich mit ins Projekt aufgenommen (so wie eine normale Unit)?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:44 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