Aktuelle Zeit: 22.10.2019 12:45

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 75 Beiträge ]  Gehe zu Seite Vorherige  1 ... 4, 5, 6, 7, 8  Nächste
Autor Nachricht
 Betreff des Beitrags: Re: Documentation Comment
BeitragVerfasst: 30.08.2019 11:02 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Deutschland::Berlin()
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.

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Documentation Comment
BeitragVerfasst: 02.09.2019 12:27 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Deutschland::Berlin()
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:
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.

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Documentation Comment
BeitragVerfasst: 02.09.2019 12:38 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Deutschland::Berlin()
Documentation Comment 1.0.9 wurde veröffentlicht.

Changelog:
  • Bugfix: Dateiverlinkungen (file:///...) werden jetzt korrekt angezeigt und geöffnet.

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Documentation Comment
BeitragVerfasst: 02.09.2019 21:43 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
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!

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Documentation Comment
BeitragVerfasst: 10.09.2019 11:37 
Offline

Registriert: 12.02.2014 20:02
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


Zuletzt geändert von hjf am 10.09.2019 11:44, insgesamt 2-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Documentation Comment
BeitragVerfasst: 10.09.2019 11:43 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Deutschland::Berlin()
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.

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Documentation Comment
BeitragVerfasst: 10.09.2019 16:55 
Offline
Benutzeravatar

Registriert: 11.08.2005 19:08
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

_________________
Bild
Warum OpenSource eine Lizenz haben sollte
PureBasic-CodeArchiv-Rebirth: Git-Repository / Download -- Jede Hilfe ist willkommen!
Manjaro Xfce x64 (Hauptsystem) :: WindowsXP/Xubuntu x86 (VirtualBox) :: PureBasic (Linux: x86/x64, Windows: x86) :: jeweils neueste Version


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Documentation Comment
BeitragVerfasst: 14.09.2019 11:05 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Deutschland::Berlin()
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.

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Documentation Comment
BeitragVerfasst: 14.09.2019 12:46 
Offline
Benutzeravatar

Registriert: 11.08.2005 19:08
Code:
;<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:
; @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.

_________________
Bild
Warum OpenSource eine Lizenz haben sollte
PureBasic-CodeArchiv-Rebirth: Git-Repository / Download -- Jede Hilfe ist willkommen!
Manjaro Xfce x64 (Hauptsystem) :: WindowsXP/Xubuntu x86 (VirtualBox) :: PureBasic (Linux: x86/x64, Windows: x86) :: jeweils neueste Version


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Documentation Comment
BeitragVerfasst: 14.09.2019 21:53 
Offline
Benutzeravatar

Registriert: 15.09.2006 05:19
Wohnort: Hansestadt Stendal
Hallo
wenn ich folgendes verwende:
Code:
;<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

_________________
Zu meiner Schulzeit war die Bildung kostenlos, für einige aber Umsonst.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 75 Beiträge ]  Gehe zu Seite Vorherige  1 ... 4, 5, 6, 7, 8  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye