Einzelnen Beitrag anzeigen

Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#26

Re: [IDE-Experte] CustomHelp

  Alt 8. Okt 2009, 07:55
Wow ... da hast du dir ja ne Menge Arbeit gemacht.

Leider hab ich im Moment keine Zeit mich um die Änderungen zu kümmern, da Custom Help eher ein Teilzeitprojekt ist.
Ich hab den letzten Patch ausprobiert und hab noch einige "issues" gefunden.
  • Unter BDS2006 kommt eine Schutzverletzung nach dem ersten Hilfeaufruf...da hilf nur noch IDE Neustart. Der Aufrufstack der IDE hilft nicht wirklich weiter. Es passiert bei ValidateHelpSystem (unter BDS2006) im RAD Studio 2009 ist alles ok.
  • Die Einstellung, ob man die CustomHelp Provider am Anfang oder am Ende sehen möchte sollte wahrscheinlich optional sein. Da hat jeder andere Vorstellungen.
  • In GetHelpStrings->PerformSearch durchsuchst du jeden Hilfenamespace erst mit dem vollen Text und falls in einem(!) etwas gefunden wurde brichst du ab und suchst nicht mit dem verkürzten weiter um evtl. in anderen Namespaces was zu finden. Die vorherige Implementation erschien mir logischer: Jeden Hilfenamespace für sich durchsuchen und prüfen, ob der volle HelpString gefunden wurde und danach gegebenenfalls verkürzen. Danach für den nächsten Hilfenamespace das gleiche machen. usw.
  • Die Redirect Schemes hab ich noch nicht ausprobiert
  • Die Unit uUtils.pas ist nicht BDS2006 konform. Dort einfach PWideChar und Widestring in PChar und Widestring umwandeln. Außerdem gab es noch kein TBytes .
  • Layout und Usability Anpassungen finde ich sehr gelungen

Danke, daß du so viel Mühe und Zeit in das Projekt reinsteckst. Da wir aber hier meistens mit BDS2006 arbeiten werde ich die Änderungen vorerst nicht einpflegen. Debuggen hat nich so viel gebracht, da der Fehler noch vor dem eigentlichen Aufruf unserer Klasse passiert:
Code:
 + $7[51F2A11F]{rtl100.bpl } System.System.@IntfAddRef (Line 17953, "system.pas" + 0) + $7
 + $0[51F26B4B]{rtl100.bpl } System.System.@HandleAnyException (Line 9980, "system.pas" + 13) + $0
 + $273[770A45C2]{ntdll.dll  } RtlpEnsureBufferSize + $273
 + $A[7707E49A]{ntdll.dll  } KiUserExceptionDispatcher + $A
 + $14[20B73F74]{coreide100.bpl} CompHelp.CompHelp.ValidateHelpSystem (Line 101, "CompHelp.pas" + 8) + $14
 + $E[20B940D6]{coreide100.bpl} EditorControl.EditorControl.TCustomEditControl.HelpKeyword (Line 4451, "EditorControl.pas" + 41) + $E
 + $0[20B99E84]{coreide100.bpl} EditorControl.EditorControl.TEditControl.CMControlCommand (Line 7255, "EditorControl.pas" + 2) + $0
 + $6[5205CA19]{vcl100.bpl } Controls.Controls.TWinControl.WndProc (Line 7246, "Controls.pas" + 105) + $6
 + $6[5205C1A4]{vcl100.bpl } Controls.Controls.TWinControl.MainWndProc (Line 7021, "Controls.pas" + 3) + $6
 + $0[51F60BC0]{rtl100.bpl } Classes.Classes.StdWndProc (Line 11572, "classes.pas" + 8) + $0
 + $24D[75288814]{USER32.dll } GetWindowLongW + $24D
 + $3C2[75288989]{USER32.dll } GetWindowLongW + $3C2
 + $7F[75289D0F]{USER32.dll } PostMessageW + $7F
 + $F2[75289D82]{USER32.dll } PostMessageW + $F2
 + $2B[7707E473]{ntdll.dll  } KiUserCallbackDispatcher + $2B
 + $47[7528F1B8]{USER32.dll } SendMessageA + $47
 + $10[20B84A6E]{coreide100.bpl} VClient.VClient.SendWindowMsg (Line 2673, "VClient.pas" + 2) + $10
 + $5[20B4A2BE]{coreide100.bpl} IDEKbd.IDEKbd.@interpret_bmi_macro$qqrp5BMI_tpcp11CmdMapTableppc (Line 39, "bmi.cpp" + 14) + $5
 + $16E[20B48ED2]{coreide100.bpl} IDEKbd.IDEKbd... (Line 586, "IDEKbd.pas" + 0) + $16E
 + $17[20B821A4]{coreide100.bpl} VClient.VClient.CmdStringProc (Line 504, "VClient.pas" + 5) + $17
 + $11[20C15B3C]{coreide100.bpl} KbClient.KbClient.TIDEKBDFrameAPI.MapAndEvalInternal (Line 832, "KbClient.pas" + 10) + $11
 + $12[20C155C1]{coreide100.bpl} KbClient.KbClient.HandleKey (Line 562, "KbClient.pas" + 6) + $12
 + $1[20C158D1]{coreide100.bpl} KbClient.KbClient.TIDEKBDFrameAPI.ProcessKeyStroke (Line 713, "KbClient.pas" + 141) + $1
 + $16[20C16604]{coreide100.bpl} KbClient.KbClient.TIDEKBDChildAPI.ProcessKeyStroke (Line 1357, "KbClient.pas" + 14) + $16
 + $18[20B98BC0]{coreide100.bpl} EditorControl.EditorControl.TCustomEditControl.DoKeyDown (Line 6843, "EditorControl.pas" + 6) + $18
 + $6[5205CA19]{vcl100.bpl } Controls.Controls.TWinControl.WndProc (Line 7246, "Controls.pas" + 105) + $6
 + $6[5205C1A4]{vcl100.bpl } Controls.Controls.TWinControl.MainWndProc (Line 7021, "Controls.pas" + 3) + $6
 + $0[51F60BC0]{rtl100.bpl } Classes.Classes.StdWndProc (Line 11572, "classes.pas" + 8) + $0
 + $24D[75288814]{USER32.dll } GetWindowLongW + $24D
 + $3C2[75288989]{USER32.dll } GetWindowLongW + $3C2
 + $7F[75289D0F]{USER32.dll } PostMessageW + $7F
 + $F2[75289D82]{USER32.dll } PostMessageW + $F2
 + $2B[7707E473]{ntdll.dll  } KiUserCallbackDispatcher + $2B
 + $47[7528C362]{USER32.dll } SendMessageW + $47
Ich denke das liegt an dem Punkt
Zitat von a-s-z-work:
  • Verbesserung des Verhaltens, wenn das Package wieder entladen wird (HelpSelector wird dann ungültig).
Aber ich konnte nicht rausfinden, was du dahingehend gemacht hast. Wenn du das nochmal rückgängig machen könntest und dann nochmal ein Patch machst, dann kann ich mich auch um die anderen angesprochenen Punkte kümmern

Es gibt noch eine neue Revision (wegen eines kleinen Bugs bei der Neuanlage von Custom Help Providern). Wenn ich noch irgendwas für dich tun kann sags einfach. Sorry, daß ich deine vorherige Frage völlig unsinnig beantwortet habe. Im moment ist arbeitstechnisch ne Menge los und da bleibt die Konzentration ein wenig auf der Strecke.
Marco Warm
TUO
TheUnknownOnes.net
  Mit Zitat antworten Zitat