AGB  ·  Datenschutz  ·  Impressum  







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

INTAEditViewNotifier startet nicht!

Ein Thema von r29d43 · begonnen am 27. Mär 2021 · letzter Beitrag vom 28. Mär 2021
Antwort Antwort
r29d43

Registriert seit: 18. Jan 2007
287 Beiträge
 
Delphi 10.4 Sydney
 
#1

INTAEditViewNotifier startet nicht!

  Alt 27. Mär 2021, 16:13
Hallo,

ich habe einen IDENotifier < TIDENotifier01 = class(TInterfacedObject, IOTANotifier, IOTAIDENotifier) >
umgebaut in einen EditViewNotifier < TEditViewNotifier01 = class(TInterfacedObject, IOTANotifier, INTAEditViewNotifier) >

Und zwar nach diesem Codebeispiel (der untere Code mit dem grünen Häckchen): https://stackoverflow.com/questions/...-in-rad-studio

So weit so gut - nur dass dieser EditViewNotifier jetzt aber leider nicht mehr starten will. Ich habe versucht, das Package zu debuggen und im constructor einen Haltepunkt gesetzt, leider scheint er da jetzt aber überhaupt erst garnicht vorbeizukommen. Beim vorherigen IDENotifier gabs diesbezüglich keine Problem.

Irgendjemand eine Idee, woran das liegen könnte?

Thx
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: INTAEditViewNotifier startet nicht!

  Alt 27. Mär 2021, 17:49
Wer ruft "dieses" register auf?

Niemand.
Zumindestens die IDE führt doch bestimmt nur "register" auf, welche keine Parameter hat.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
r29d43

Registriert seit: 18. Jan 2007
287 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: INTAEditViewNotifier startet nicht!

  Alt 27. Mär 2021, 19:07
Thx, mit

Delphi-Quellcode:
initialization

topMostEditView := (BorlandIDEServices as IOTAEditorServices).TopView;
register(topMostEditView);

finalization

RemoveNotifier(topMostEditView);
läuft das Package jetzt wenigstens.

Allerdings scheint der Notifier nicht wirklich mit dem currentEditView verbunden zu sein, weil auch die callBack-Routinen (AfterSave, Modified etc.) nicht aufgerufen werden.

Und beim DeInstallieren des Packages gibts dann auch leider immer eine Exception.

?

(gibt's nicht irgendwo einen diesbezüglichen BeispielCode wo man sich das mal reinziehen kann? (habe vorhin schonmal kurz aber leider erfolglos danach gesucht))
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

AW: INTAEditViewNotifier startet nicht!

  Alt 27. Mär 2021, 19:35
Schau mal, ob Dir die Unit weiter hilft.

Aufrufen dann z.B. mit:
Delphi-Quellcode:
function Get_Selected_Text: String;
var
  EditorServices: IOTAEditorServices;
  EditView: IOTAEditView;
  EditBlock: IOTAEditBlock;
begin
  Result := '';

  EditorServices := BorlandIDEServices as IOTAEditorServices;
  EditView := EditorServices.TopView;
  RegisterViewPaintNotifier(EditView);

  if Assigned(EditView) then
  begin
    EditBlock := EditView.GetBlock;
    Result := EditBlock.Text;
  end;
end;

Ich weiß nicht, ob es Dein Problem löst, aber so läuft es bei mir zuverlässig.
Angehängte Dateien
Dateityp: pas uViewPaintNotifier.pas (7,6 KB, 4x aufgerufen)
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
r29d43

Registriert seit: 18. Jan 2007
287 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: INTAEditViewNotifier startet nicht!

  Alt 27. Mär 2021, 22:53
Ja, danke, ich glaube, es ist eine Gute Idee, den EditViewNotifier in einer extra Unit zu deklarieren und ihn überhaupt erst dann zu registrieren, wenn auch ein 100% gültiges IOTAEditView als Parameter für die Register-Proc vorliegt. Werde ich morgen früh gleich mal in Angriff nehmen.

Bisher hatte ich das einfach mit alles in nur einer Unit etwas zu eng hochgezogen, mit entweder nur dem einen (IDENotifier) oder dem anderen (EditView)Notifier als Home für den Hauptcode. Für letzteres ist wahrscheinlich ein IDENotifier die doch normalere Wahl. Diese IOTA-Dingens sind noch ein bissel Neuland, von daher..
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

AW: INTAEditViewNotifier startet nicht!

  Alt 27. Mär 2021, 23:11
Für mich ist das alles auch etwas unübersichtlich.
Ich habe mich da auch durch fremde Beispiele gewühlt und das dann Stück für Stück an meinen Bedarf angepasst.
Ich brauche auch einen Code-Zugriff über mehrere Units parallel, was sicher eher unüblich ist.

Übrigens können mehrere offene Edit-Views die gleiche Unit benutzen. Ggf. muss man das auch beachten.

Kann natürlich sein, dass es auch für mich eine einfachere Lösung gibt. Aber ich bin erst mal froh, dass es überhaupt vernünftig läuft.

Falls Du mal noch ein paar Anregungen in diesem Themenbereich brauchst, könntest Du mal hier stöbern:
https://www.delphipraxis.net/204485-...de-editor.html
https://www.delphipraxis.net/204563-...r-experte.html
https://www.delphipraxis.net/196493-unitoptimizer.html
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: INTAEditViewNotifier startet nicht!

  Alt 28. Mär 2021, 09:21
Bei initialization ist "nur" dein Package (diese DLL) geladen,
Aber erst beim register (ohne Parameter) hatte die IDE vorher Zeit ein paar Dinge zu initialisieren. (und nun rate mal, warum alle Anderen ihren Code erst im register ausführen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
r29d43

Registriert seit: 18. Jan 2007
287 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: INTAEditViewNotifier startet nicht!

  Alt 28. Mär 2021, 11:24
@stahli, besten Dank für die Links. Das wären ca. 29 Seiten IOTA-Diskussion als Alternativprogramm zum Corona-Lockdown. Da kann ja wohl kaum mehr Langeweile aufkommen!

@himitsu, diese zusätzliche Codezeile im initialization-Teil war doch alleine nur dem Umstand geschuldet, dass ich in der ersten und einzigen Package-unit gerade den IDENotifier durch einen EditViewNotifier ausgetauscht hatte, und dessen Register-Proc (ohne dessen Aufruf das Package erst garnicht startet) halt einen Parameter brauchte. Ein Versuch, den ich ja auch schnell wieder verworfen habe. War/ist halt jetzt noch so die totale IOTA-Experimentierphase!

Geändert von r29d43 (28. Mär 2021 um 11:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: INTAEditViewNotifier startet nicht!

  Alt 28. Mär 2021, 12:33
Es ist egal was man nutzt,
als Einstiegspunkt wird (standardmäßig) immer dieses register; verwendet.

Was du darin dann machst, ist dir überlassen.
Auch dein spezielles register(...) darfst darin aufrufen ... du mußt nur über die OTA das passende/aktive Editfenster suchen/holen und an deinen Parameter übergeben.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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 22:19 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