Seite 7 von 8
Re: Documentation Comment
Verfasst: 30.08.2019 11:02
von RSBasic
Ich vergleiche heute Abend dein Code mit meinem Code. Da fehlt vielleicht ein SendMessage_()
Danke für dein Beispiel.
\\Edit:
Oder es hat was damit zu tun mit dem Ermitteln der summary-Tags, weil der Link ja abgeschnitten wird. Das war damals nicht so. Ich werde es prüfen.
Re: Documentation Comment
Verfasst: 02.09.2019 12:27
von RSBasic
Hi HeX0R,
mein Code ist genauso aufgebaut wie dein Beispielcode.
Der einzige Unterschied, dass ich SetGadgetText() benutze, um RTF-Formate benutzen zu können.
Man kann auch mit deinem Beispielcode das Problem nachstellen:
Code: Alles auswählen
Procedure NewUpdateWindow_CallBack(Window, Msg, wparam, lparam)
Protected StringBuffer.s, *el.ENLINK, txt.TEXTRANGE, w, h
Select Msg
Case #WM_NOTIFY
*el = lParam
If *el\nmhdr\idFrom = 0
If *el\nmhdr\code = #EN_LINK
If *el\msg = #WM_LBUTTONDOWN
StringBuffer = Space(1024)
txt\chrg\cpMin = *el\chrg\cpMin
txt\chrg\cpMax = *el\chrg\cpMax
txt\lpstrText = @StringBuffer
SendMessage_(*el\nmhdr\hwndFrom, #EM_GETTEXTRANGE, 0, txt)
If StringBuffer
Debug StringBuffer
EndIf
EndIf
EndIf
EndIf
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
OpenWindow(0, 0, 0, 800, 500, "", #PB_Window_SystemMenu)
SetWindowCallback(@NewUpdateWindow_CallBack(), 0)
EditorGadget(0, 0, 0, 800, 500, 0)
SendMessage_(GadgetID(0), #EM_SETEVENTMASK, 0, SendMessage_(GadgetID(0), #EM_GETEVENTMASK, 0, 0) | #ENM_LINK)
SendMessage_(GadgetID(0), #EM_AUTOURLDETECT, #True, 0)
;SetGadgetText(0, "Get attribute file:///D:\Programmierung\forumbeschr.txt valueaaaaaaa of a comment")
SetGadgetText(0, "{\rtf1{\colortbl ;\red0\green100\blue0;}{Ergebnis = LogString(): beschreibung file:///D:\Programmierung\forumbeschr.txt beschreibung2\par}{ abc\par}{Ergebnis: def\par}{Beispiel: \cf1 ghi \cf0 \par}}")
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
Der Pfad wird von RTF falsch interpretiert bzw. die Backslashes müssen escapted werden, damit der Pfad korrekt angezeigt werden kann.
Ich habe das Escapen eingebaut. Version kommt gleich.
Re: Documentation Comment
Verfasst: 02.09.2019 12:38
von RSBasic
Documentation Comment 1.0.9 wurde veröffentlicht.
Changelog:
- Bugfix: Dateiverlinkungen (file:///...) werden jetzt korrekt angezeigt und geöffnet.
Re: Documentation Comment
Verfasst: 02.09.2019 21:43
von HeX0R
O.k., dass Du RTF direkt nutzt war mir nicht bewusst, jetzt verstehe ich auch die ganze Diskussion.
Danke für das Update, läuft wie geschmiert nun!
Re: Documentation Comment
Verfasst: 10.09.2019 11:37
von hjf
Hallo RSBasic,
mir ist beim Einsatz des Tools folgendes aufgefallen:
- In der 1. Zeile des PopUps steht "Ergebnis = Name()". Hat diese Proc aber keinen Rückgabewert,
dann sollte das "Ergebnis =" auch nicht angezeigt werden. Die <Return>Zeile könnte dann auch
automatisch ignoriert werden.
- Bei einem Quellfile mit ca. 3000 Zeilen generiert das Tool mehrere Sekunden Vollast auf eine CPU-Kern
(ein Phenom mit 4x3,2GHz). Man hört am CPU-Lüfter, der CPU-Takt ist dann fast dauernd oben.
Beim Arbeiten an einem Notebook (i7 7500U), schon garnicht im Akkubetrieb, das Gleiche. Nicht wirklich zu gebrauchen.
Monitort man die CPU-Temperatur oder auch akustisch den Lüfter, dann ist das Verhalten mit zunehmender
Größe der Files gut zu erkennen. Ohne das Tool habe ich hier um die 35°C CPU-Temp., bei dem o.g. File werden
es dann 60°C (dann kommt der Lüfter).
Das Parsen scheint nicht effizient genug zu laufen, schade.
hjf
Re: Documentation Comment
Verfasst: 10.09.2019 11:43
von RSBasic
hjf hat geschrieben:- In der 1. Zeile des PopUps steht "Ergebnis = Name()". Hat diese Proc aber keinen Rückgabewert,
dann sollte das "Ergebnis =" auch nicht angezeigt werden. Die <Return>Zeile könnte dann auch
automatisch ignoriert werden.
Ich kann gerne so machen, dass "Ergebnis = " nur dann angezeigt wird, wenn der Return-Kommentar angegeben wurde.
Ich könnte zwar zusätzlich nach "ProcedureReturn" suchen, aber das würde die Performance noch etwas verschlechtern.
hjf hat geschrieben:- Bei einem Quellfile mit ca. 3000 Zeilen generiert das Toll mehrere Sekunden Vollast auf eine CPU-Kern
Ich werde ein paar Einstellungen bereitstellen, mit denen man etwas an der Performance des Parsers herumschrauben kann.
Version kommt später. Danke fürs Testen.
Re: Documentation Comment
Verfasst: 10.09.2019 16:55
von Sicro
Ein paar Ideen:
- Das Tool nur beim Laden und Speichern des Codes ausführen
- Content_Changed-Event vom PB-IDE-Scintilla abfangen und das Tool nur ausführen, wenn eine gewisse Zeit der Code unverändert geblieben ist
- Geänderte Code-Bereiche lokalisieren und nur diese erneut parsen
- maxTokenValueLength=1000 herabsetzen, z. B. 150 reicht in dem Fall bestimmt auch (d. h. Procedure-Name: max. 150-Zeichen, Kommentare: max. 149-Zeichen)
- Das Parsen auf mehrere Threads verteilen
Re: Documentation Comment
Verfasst: 14.09.2019 11:05
von RSBasic
Documentation Comment 1.1.0 wurde veröffentlicht.
Changelog:
- Geändert: Wenn kein "<return>" angegeben wurde, dann wird auch kein "Ergebnis = " vor dem Prozedurnamen angezeigt.
- Optimiert: Maximale Token-Länge wurde von 1000 auf 250 Zeichen für das Lesen der Prozedurnamen und Kommentare reduziert.
- Optimiert: Summary-Kommentare werden jetzt nicht mehr alle 3 Sekunden ermittelt, sondern nur, wenn die Datei sich geändert hat.
@hjf
Kannst du es nochmal testen? Dein Prozessor müsste mit dieser Version nicht mehr dauerhaft überlastet sein, sondern nur einmal kurz, wenn die den Tab wechselst oder die PB-Datei speicherst.
@Sicro
Danke für den Tipp mit dem maxTokenValueLength.
Re: Documentation Comment
Verfasst: 14.09.2019 12:46
von Sicro
Code: Alles auswählen
;<comment>
; <summary>Meine Funktionsbeschreibung...</summary>
; <param>Parameter1: Beschreibung des ersten Parameters</param>
; <param>Parameter2: Beschreibung des zweiten Parameters</param>
; <param>Parameter3: Beschreibung des dritten Parameters</param>
; <return>Beschreibung des Rückgabewertes</return>
; <example>MeineFunktion(1, 2, "Hello")</example>
;</comment>
Procedure MeineFunktion(Parameter1, Parameter2.i, Parameter3.s)
;...
EndProcedure
Ist die Verwendung von
Doxygen-Dokumentationskommentaren nicht viel klarer zu lesen:
Code: Alles auswählen
; @BRIEF Meine Funktionsbeschreibung...
; @PARAM Parameter1 Beschreibung des ersten Parameters
; @PARAM Parameter2 Beschreibung des zweiten Parameters
; @PARAM Parameter3 Beschreibung des dritten Parameters
; @RETURN Beschreibung des Rückgabewertes
; @EXAMPLE MeineFunktion(1, 2, "Hello")
;
Procedure MeineFunktion(Parameter1, Parameter2.i, Parameter3.s)
;...
EndProcedure
Wir könnten auch beide Varianten unterstützen.
Re: Documentation Comment
Verfasst: 14.09.2019 21:53
von SDL
Hallo
wenn ich folgendes verwende:
Code: Alles auswählen
;<comment>
; <summary> Ermittelt ob ein Programm schon gestartet ist/ Autor: PureLust </summary>
; <param> AppInstanceExists() </param>
; <return> #True/#False </return>
; <example> AppInstanceExist() </example>
; http://www.purebasic.fr/german/viewtopic.php?p=260173#p260173
;</comment>
wird der Link nicht angezeigt. Fehler oder Käfer?
PB 5.70 Win 7pro / DC 1.1.0