![]() |
[IDE-Experte (2006,07,09,10,XE,XE2)] CustomHelp
CustomHelp (2.irgendwas :))
... ist ein IDE Experte, der die Delphi Hilfe um ein paar nützliche Funktionen erweitert. Was soll das? Du "stehst" in deinem Quellcode und brauchst Hilfe zu einer bestimmten Funktion. Du drückst F1 und bekommst deine vertraute Delphi Hilfe. Jetzt hättest du natürlich auch gern ein Beispiel zu deren Anwendung oder du fragst dich, ob jemand in der DP schonmal das gleiche Problem damit hatte mit dem du dich gerade herumschlägst. Oder du sehnst dich nach der "alten" Delphi 7 Hilfe. Also musst du die vertraute schützende Umgebung deiner IDE (ja das ist doppelt gemoppelt) verlassen und dich durch die verschiedenen Suchmaschinen und Hilfedateien hangeln. Hier hilft CustomHelp. Der Assistent fasst deine Suchanfrage in einem niedlichen kleinen Fenster zusammen, von dem aus du in deinen Lieblingssuchmaschinen und Hilfedateien blättern kannst. Die Features im Überblick ... oder warum sollte ich weiterlesen? (Für alle die lieber Video gucken anstatt zu lesen ... siehe unten. :))
Wie (de-)installiere ich CustomHelp? Am einfachsten ist es über das ![]() ![]() ![]() Dann einfach das Package (auf ![]() Vorher sollte man auf gleiche Weise TUOCommon installieren. ( ![]() Alles weitere über die Benutzung erfahrt ihr im Video (siehe unten) Vorschläge für Hilfe-Provider (bitte die URLs aus den Links kopieren)
Known Issues
FAQ
Danke an ...
Viel Spaß damit. wünschen Marco und Benny Videos ![]() ![]() ![]() |
Re: [IDE-Experte] CustomHelp
Zitat:
Zuerst prüfen, ob die WelcomePage nicht deaktiviert ist:
Delphi-Quellcode:
Dann braucht's zwei Interfaces, die per Standard offenbar nicht dabei sind/waren. Ich habe sie - glaube ich - in einem der Blogs eines Borland/CodeGear/Embarcadero-Mitarbeiter gefunden. Die Code-Kommentare habe ich mal drin gelassen, sie stamm,en nicht von mir.
function TDPxHBConfig.WPIsEnabled : boolean;
begin result:= (GetModuleHandle( 'startpageide100.bpl' ) > 0) // Delphi 2007 OR (GetModuleHandle( 'startpageide120.bpl' ) > 0) // Delphi 2009 OR (GetModuleHandle( 'startpageide140.bpl' ) > 0); // Delphi 2010 end;
Delphi-Quellcode:
Und nun geht's auch schon los:
IURLModule = interface
['{9D215B02-6073-45DC-B007-1A2DBCE2D693}'] procedure Close; function GetURL: string; // tested procedure SetURL(const AURL: string); // tested procedure SourceActivated; function GetWindowClosingEvent: TWindowClosingEvent; // WARNING!!! DO NOT CALL!!! procedure Proc1; procedure Proc2; procedure Proc3; procedure Proc4; procedure Proc5; property URL: string read GetURL write SetURL; end; IDocModule = interface ['{60AE6F18-62AD-4E39-A999-29504CF2632A}'] procedure AddToProject; function GetFileName: string; procedure GetIsModified; function GetModuleName: string; procedure Save; procedure Show; // doesn't seem to work properly... procedure ShowEditor(Visible: Boolean; const Filename: string); procedure GetProjectCount; procedure GetProject; procedure GetActiveProject; property Filename: string read GetFilename; property ModuleName: string read GetModuleName; end;
Delphi-Quellcode:
Falls die WelcomePage zwar geladen, aber gerade geschlossen ist, kann man sie mit folgendem Code anzeigen:
function TDPxHBIDEWizard.GoURL(const URL: string) : boolean;
var ModuleServices: IOTAModuleServices; Module: IOTAModule; I: Integer; mIdx : integer; URLModule: IURLModule; DocModule: IDocModule; begin if NOT WPVisible then ShowWP; result:= FALSE; mIdx:= -1; ModuleServices := BorlandIDEServices as IOTAModuleServices; for I := 0 to ModuleServices.ModuleCount-1 do begin Module:= ModuleServices.Modules[I]; if Supports(Module, IURLModule, URLModule) then begin if Supports(Module, IDocModule, DocModule) then begin URLModule.URL:= URL; result:= TRUE; mIdx:= i; BREAK; end; end; end; if (mIdx > -1) AND (mIdx < ModuleServices.ModuleCount) then ModuleServices.Modules[mIdx].Show; end;
Delphi-Quellcode:
procedure TDPxHBIDEWizard.ShowWP;
var IDEService : INTAServices; actList : TCustomActionList; idx : integer; act : TContainedAction; begin IDEService:= (BorlandIDEServices AS INTAServices); actList:= IDEService.ActionList; for idx:= 0 to actList.ActionCount-1 do begin act:= actList.Actions[idx]; if act.Name = 'ViewWelcomePageCommand' then act.Execute; end; end; Ich hoffe, das hilft ein wenig. :-) |
Re: [IDE-Experte] CustomHelp
Hallo und vielen Dank,
eigentlich wussten wir ja, daß Du weißt wie es geht ... aber wir haben aus Ehrfurcht nicht gefragt ;-) Mal sehen ob wir Morgen zum einbauen kommen. gut's Nächtle. |
Re: [IDE-Experte] CustomHelp
Zitat:
|
Re: [IDE-Experte] CustomHelp
Und da sind wir wieder.
Neue Features: - Unterstützung der alten Win32 Hilfe (z.B. Delphi 7 Hilfe (wer die so mochte) und verschiedene Hilfen von Komponentenanbietern) - Anzeige des Suchresultats auf der Welcomepage (na endlich hat die mal nen Sinn ;-) ) Eine Beispiel-Konfiguration sieht so aus: ![]() |
Re: [IDE-Experte] CustomHelp
Zwei Dinge:
1. Ladet das Projekt hier hoch. und b) gibts das auch auf Deutsch? Edith hat noch ein III: Ich finde es ziemlich schade, daß Ihr gleich mal Null Kommentare da drin habt. Da kann man eigentlich nicht wirklich von lernen. Zum Projekt an sich aber :thumb: Sherlock |
Re: [IDE-Experte] CustomHelp
Danke für das Lob. :)
Was die anderen Punkte angeht: Wir wollen es nicht an 2 Stellen pflegen (funktioniert aus Erfahrung nicht) ... deshalb gibts hier nur den Link auf das Original. Deutsch? Och nö ... wir sind doch alle Entwickler und das bißchen Englisch verträgt man noch. Und die Kommentare ... Das Tool ist gestern innerhalb eines halben Tages neben der Jahresinventur unseres Brötchengebers her entstanden. Das war so ein Hin-und-Herspringen zwischen dem Telefon, IBExpert und Delphi. Daher sieht der Code auch weniger schön aus. Aber ich werd mal sehen, ob da noch ein paar Kommentare reinkommen. :) |
Re: [IDE-Experte] CustomHelp
So, es hat sich wieder einiges getan:
|
Re: [IDE-Experte] CustomHelp
Das Resultat unserer morgentlichen Bemühungen
|
Re: [IDE-Experte] CustomHelp
Hallo,
dieses Plugin ist ja super! :thumb: Wenn so etwas doch mal als Standard dabei wäre ;) Ich bin gerade dabei alle Hilfen einzubinden und dabei sind mir ein paar Sachen/Probleme aufgefallen:
-- CU, Andre |
Re: [IDE-Experte] CustomHelp
Hi Andre...
danke daß Sie sich für dieses Produkt entschieden haben ;-) vielen Dank für die Anregungen. Zu Punkt1 ... Über die Reihenfolge hab ich auch lange nachgedacht... wie man's macht ist es irgendwie falsch Punkt2 ... Da hast du vollkommen recht kommt noch rein. Punkt3 ... komisch !DefaultKeywordIndex sollte eigentlich in jeder Hilfe dabei sein. Noch hab ich nicht herausgefunden, wie ich die NavDataMoniker auslesen kann geschweige denn, wie ich herausfinde welcher der Default ist ... *kopfschüttel* . Vielleicht hast du eine Idee. Es muss irgendwie gehen. Du kannst dir die verfügbaren Moniker mit ![]() Vorschlag zu der Sortierung... man könnte die Resultate auch in einer CategoryButton-Komponente anzeigen (wie die Komponentenpalette) mit ein wenig owner draw Gruß Marco |
Re: [IDE-Experte] CustomHelp
Hi,
Zitat:
Dei DevExpress-Hilfe ist zusätzlich als Plugin in der Embarcadero-Hilfe integriert. In diesem Index tauchen auch viele Keywords auf, die allerdings anscheinend nicht zu dem passen, was als HelpString übergeben wird (z.B. cxEdit.TcxCustomEdit.EditValue) :( Wird nur EditValue übergeben, findet er einige Einträge. Ach übrigens: Zu TObject (wird aufgelöst zu System.TObject) findet er auch nix :tongue: Aber das ist denke ich nicht der Fehler von CustomHelp ... zu TObject direkt wird was gefunden. Na dann erweitere ich mal die Suche, so das zusätzlich der letzte Teil nach dem Punkt gesucht wird, wenn sonst keine Namespace-Treffer vorhanden sind, oder so ... (Quelltext siehe unten) Zitat:
Hier mal der Code, mit dem ich die Auswahl momentan aufbaue:
Delphi-Quellcode:
Am Ende von TMyViewer.ShowHelp habe ich noch folgendes angepasst, damit man keine Endlosschleife bekommt wenn man die Auswahl abbricht:
function TMyViewer.GetHelpStrings(const HelpString: String): TStringList;
var idx: Integer; c, d, u : String; o, order : Integer; Index : IHxIndex; Topics : IHxTopicList; slot : integer; HelpStringPart: string; function EncodedHelpString: String; var i: integer; begin Result:=''; for i := 1 to Length(HelpString)do Result:=Result + '%'+Format('%.2x', [Ord(HelpString[i])]); end; procedure CheckHelpString(const HelpString: string); var idy: Integer; begin slot := Index.GetSlotFromString(HelpString); if AnsiContainsText(Index.GetStringFromSlot(slot), HelpString) then begin Topics := Index.GetTopicsFromSlot(slot); for idy := 1 to Topics.Count do begin inc(order); Result.Add(TCustomHelp.EncodeURL(Topics.Item(idy).Title[HxTopicGetRLTitle, 0], Topics.Item(idy).Location, Topics.Item(idy).URL, order)); end; end; end; begin //Weil wir bei UnderstandsKeyword gesagt haben, das wir das Keyword verstehen (Result = 1) //werden wir jetzt gefragt, welche Hilfethemen wir zu diesem Keyword liefern können //Die StringList wird vom Hilfesystem wieder freigegeben Result := TStringList.Create; HelpStringPart := HelpString; repeat idx := Pos('.', HelpStringPart); Delete(HelpStringPart, 1, idx); until idx < 1; order := 0; //Und jetzt noch die eigentlichen Hilfe-Namespaces durchsuchen for idx := 0 to GlobalCustomHelp.EnabledIndices.Count-1 do begin if supports(GlobalCustomHelp.EnabledIndices[idx], IHxIndex, Index) then begin CheckHelpString(HelpString); end; end; if order = 0 then for idx := 0 to GlobalCustomHelp.EnabledIndices.Count-1 do begin if supports(GlobalCustomHelp.EnabledIndices[idx], IHxIndex, Index) then begin CheckHelpString(HelpStringPart); end; end; for idx := 0 to GlobalCustomHelp.ProviderList.Count - 1 do begin TCustomHelp.DecodeURL(GlobalCustomHelp.ProviderList.Strings[idx], c, d, u, o); if Pos('://', u)>0 then begin inc(order); Result.Add(TCustomHelp.EncodeURL(c,d,u+EncodedHelpString, order)) end else if AnsiSameText(ExtractFileExt(u),'.hlp') then begin inc(order); Result.Add(TCustomHelp.EncodeURL(c,d,'winhlp://-k '+HelpString+' '+u, order)); end else if AnsiSameText(ExtractFileExt(u),'.chm') then begin inc(order); Result.Add(TCustomHelp.EncodeURL(c,d,'htmlhlp://'+HelpString+URL_SPLITTER+u, order)); end; end; end;
Delphi-Quellcode:
Außerdem habe ich mir den Selector angepasst, das der HelpString in der Caption angezeigt wird. Da wundert man sich doch, was man so als Suchbegriff übergeben bekommt.
else if HelpString <> '' then
ShowHelp(ForceSelector(HelpString)); Probleme hab ich im Moment z.B. noch, wenn ich eine fehlerhafte Anweisung abfrage. Da bekomme ich als HelpString "erroneous type" übergeben!? Besser wäre natürlich der selektierte Text ;) Teilweise bekomme ich noch Fehler in PasHelp.TestKeyword. Das scheint mit dem Kibitz-Feature zusammenzuhängen, und tritt nur auf, wenn die CustomHelp.bpl neu geladen wird. Ist also nicht so wichtig. PS: In der Projektdatei fehlt noch die Unit uMSHelpServices.pas. |
Re: [IDE-Experte] CustomHelp
Hmmmmmm.... mit langem (m)
Das mit dem "erroneous type" ist typisch RAD Studio 2009+. In der BDS2006 klappt das Prima. Da bekomm ich auch keinen Namespace des Objektes. Wenn du das mit dem selektierten Text hinbekommst wäre ich natürlich dankbar :-D. Ich werde das mit dem Punkt im Helptext mal berücksichtigen. |
Re: [IDE-Experte] CustomHelp
Neue Version... neues Glück
edit: Kleiner Tipp, die Auswahlbox merkt sich die geschlossenen Rubriken, sodaß weniger häufig benutzte "Handbücher" zugeschlagen bleiben :-) edit2: der Fehler mit dem "erroneous type" wird wirklich von Delphi verursacht. Sobald das Keyword innherhalb einer Methode oder Funktion abgefragt wird kommt auf jedes unbekannte Schlüsselwort dieses Keyword zurück. außerhalb von begin...end klappt es jedoch (obwohl es da genauso unbekannt sein dürfte.) |
Re: [IDE-Experte] CustomHelp
Und noch eine Release vorm Wochenende
|
DP-Maintenance
Dieses Thema wurde von "mkinzler" von "Tools rund um Delphi" nach "Open-Source" verschoben.
Liegt im Source vor |
Re: [IDE-Experte] CustomHelp
Zitat:
Wobei ich nicht weiß, ob idx bzw. Result -1 ist, wenn Execute false zurückgibt. Ansonsten (failsave):
Delphi-Quellcode:
Ansonsten sieht das gut aus, und eventuell teste ich das noch heute/morgen.
function THelpSelector.SelectKeyword(Keywords: TStrings): Integer;
var u : String; begin if not TFormHelpSelector.Execute(Keywords, Result, u) then Result := -1; end; MfG xZise |
Re: [IDE-Experte] CustomHelp
Hi Marco,
Zitat:
Delphi-Quellcode:
function TMyViewer.UnderstandsKeyword(const HelpString: String): Integer;
var hs : IHelpSystem; begin //Das Hilfesystem fragt uns: Verstehst du dieses Keyword (der Begriff unter dem Cursor)? if HelpString = 'erroneous type' then begin Result := 0; Exit; end; Result := 1; //ja! if GetHelpSystem(hs) then begin //Noch schnell dem Hilfesystem sagen, das wir einen eigenen Auswahldialog für die //verschiedenen Hilfethemen haben hs.AssignHelpSelector(THelpSelector.Create(HelpString)); end; end; |
Re: [IDE-Experte] CustomHelp
Hi Andre,
vieeeelen Dank. Jetzt klappt's super. Die Änderung ist auch schon im Repository. So macht 'ne Community echt Spaß schönen Tag noch Gruß Marco |
Re: [IDE-Experte] CustomHelp
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Marco,
anbei habe ich mal meine Änderungen als Patch (Stand R337) zusammengefasst.
Vielleicht ist ja das ein oder andere für dich dabei. |
Re: [IDE-Experte] CustomHelp
Danke... ich schau es mal durch :-)
|
Re: [IDE-Experte] CustomHelp
Hi,
weisst du zufällig, wie ich aus einer ms-help url die Topic-Infos heraus bekomme? Das Standard-Hilfe-System liefert noch weitere Treffer, die man auch noch anzeigen könnte. Es gibt ja das Interface IHxTopic das alles nötige liefert, aber wie komme ich an eine Instanz mittels ms-help://embarcadero.rs2009/...? |
Re: [IDE-Experte] CustomHelp
Hi,
es gibt die Möglichkeit eine Volltextsuche im IHxSession durchführen
Delphi-Quellcode:
entweder im kompletten Artikeltext mittels des NavDataMonikers
IHxSession.Query
Delphi-Quellcode:
oder nur in den Keywords mittels
'!DefaultFullTextSearch'
Delphi-Quellcode:
. Ersteres ist bereits eingebaut... letzteres bringt manchmal weniger Resultate als das suchen über den Slot.
'!DefaultKeywordIndex'
|
Re: [IDE-Experte] CustomHelp
Neues Feature:
Da ab RADStudio 2007 die führenden Namespaces im Suchbegriff enthalten sind (z.B. Unitnamen und Klassennamen) gibt es jetzt die Möglichkeit diese vor der Suche abschneiden zu lassen. Entweder nur den ersten oder alle |
Re: [IDE-Experte] CustomHelp
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Marco,
Zitat:
Nach langem Rumprobieren und Studieren des Quellcodes der HelpIntf.pas habe ich viel hinbekommen:
Anbei gibt es den Patch für die aktuelle Revision (R343). Ich würde mich freuen, wenn man das in CustomHelp übernehmen würde. Nachfolgend die Änderungen/Erweiterungen im Einzelnen:
|
Re: [IDE-Experte] CustomHelp
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.
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:
Ich denke das liegt an dem Punkt
+ $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 Zitat:
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. |
Re: [IDE-Experte] CustomHelp
Noch schnell was "Neues": Im ersten Post gibts einen Link zu einem neuen Video, das die Installation und ein paar Möglichkeiten vorführt.
|
Re: [IDE-Experte] CustomHelp
Hallo Marco,
Zitat:
Zitat:
Zum Debuggen solltest du auf jeden Fall Breakpoints in deinem Code aktivieren, um zu schauen, ob der Code aufgerufen wird. Meistens sind diese Exceptions nämlich Folgefehler, weil wir die Dinge nicht so machen, wie das Hilfesystem es erwartet. Na das liegt dann wohl an der äußerst ausführlichen Doku! :glaskugel: Zu meinen Änderungen: Der HelpSelektor wird jetzt nur noch einmal erzeugt, den könnte man aber auch denke ich problemlos wieder jedes Mal erzeugen. Aber registriert wird er immer noch bei jedem Aufruf. In UnderstandsKeyword wird jetzt die echte Anzahl an Ergebnissen übergeben, da könnte man aber auch wieder fest die 1 zurück liefern. Vielleicht kommt da die Suche dem Hilfesystem in die Quere. |
Re: [IDE-Experte] CustomHelp
Hallo Andre,
Zitat:
Übringens: Breakpoints und deren Anwendung sind mir vertraut ;-) (nichts für ungut) Die Exception tritt eben schon auf bevor ich irgendwas in meinen Klassen mache. Ob understandskeyword die reale Resultatmenge zurückgibt ist dem Hilfesystem völlig egal... dort wird nur geprüft:
Delphi-Quellcode:
vFound := vViewer.UnderstandsKeyword(HelpKeyword) > 0;
|
Re: [IDE-Experte] CustomHelp
Hallo Marco,
Zitat:
Zitat:
Zitat:
|
Re: [IDE-Experte] CustomHelp
Hallo Andre,
soweit ich das bis jetzt rausbekommen habe, ist der Fehler einizig und allein auf den THelpSelector beschränkt. Ich denke es könnte irgendein Problem bei der Referenzzählung des IHelpSystem sein. Aber wie man dem entgegenwirkt? :gruebel: |
Re: [IDE-Experte] CustomHelp
neue Release... Alle Änderungen von a-s-z-work sind jetzt eingepflegt.
+ Möglichkeit der Prüfung, ob ein Keyword überhaupt in einer WindowsHilfe (*.hlp) Datei vorkommt. z.B. d7.hlp |
Re: [IDE-Experte] CustomHelp
Das Projekt lässt sich unter D2007 nicht mehr laden:
Zitat:
|
Re: [IDE-Experte] CustomHelp
Ich hab dir mal ein D2007-Projekt ins Repository gepackt. Probiers mal damit.
|
Re: [IDE-Experte] CustomHelp
Die Direktive VER180 und VER185 sind beide aktiv, d.h. REG_ROOT_KEY wird doppelt definiert.
VER180 entfernt und es läuft super unter D11. Danke :thumb: |
Re: [IDE-Experte] CustomHelp
Hey, danke! So ist das wenn man kein D2007 zur Hand hat. Habs im Repository korrigiert.
|
Re: [IDE-Experte] CustomHelp
Neue Woche neue Version.
Es ist jetzt möglich neben Urls und HtmlHelp, WinHelp Dateien auch beliebige Pfade als Hilequelle anzugeben. Der Suchbegriff wird entsprechend dem Platzhalter $(HelpString) eingefügt. z.B.:
Code:
öffnet und sucht in einer PDF-Datei.
"C:\Program Files (x86)\Adobe\Reader 9.0\Reader\AcroRd32.exe" /A "zoom=50&navpanes=1=OpenActions&search=$(HelpString)" "C:\Users\MaWarm\Documents\Help\BDS4 Reference.pdf"
Es werden nun auch alle anderen Umgebungsvariablen ersetzt (z.B. $(BDS) ) viel Spaß damit Gruß Marco |
Re: [IDE-Experte] CustomHelp
Zitat:
|
Re: [IDE-Experte] CustomHelp
Da wir nun endlich die Idee hinter SVN so halbwegs verstanden haben, hat sich die URL im ersten Beitrag geändert.
Es gibt jetzt im SVN unter tags/Release/CustomHelp eine saubere Release-Kultur, damit ihr nicht jeden Blödsinn mitmachen müsst, den wir verbrechen. :) |
Re: [IDE-Experte] CustomHelp
Deshalb hat er bei mir gestern, alles neu heruntergeladen
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz