Bug in QuickLib
Liste der Anhänge anzeigen (Anzahl: 2)
QuickLib ist eine umfangreiche MultiPurpose-Library, die in der aktuellen Version 2.1 mit GetIt heruntergeladen werden kann.
Leider hat die Unit Quick.Commons einen Bug:
Code:
Das bedeutet, dass beim Aufruf von
//checks if need include signs
if pfIncludeNumbers in Complexity then // QuickLib 2.1
Code:
keine Sonderzeichen eingefügt werden!
RandomPassword(10, [pfIncludeSigns]);
Sowie beim Aufruf von
Code:
SOWOHL Sonderzeichen als auch Ziffern eingefügt werden!
RandomPassword(10, [pfIncludeNumbers]);
Hat jemand noch andere Bugs in QuickLib bemerkt? Hier ist ein kleines Projekt, mit dem der Bug reproduziert werden kann: Anhang 53472 Und hier ist der Bug-Fix: Anhang 53473 |
AW: Bug in QuickLib
Weiterer Bug gefunden:
Code:
erzeugt ein Memory-Leak. Es scheint keine Möglichkeit zu geben, das Gedächtnis-Loch zu vermeiden:
Quick.Process.GetProcessList
Code:
Dies scheint ein konzeptioneller Fehler zu sein: Quick.Process.GetProcessList gibt ein Ergebnis vom Typ TStringList zurück. Aber wie soll man den Speicher dieser StringList wieder freigeben? Besser wäre es, der Funktion Quick.Process.GetProcessList eine existierende StringList als var-Parameter zu übergeben, die man dann nachher selbst freigeben kann, z.B.:
procedure TForm1.tsProcessListsShow(Sender: TObject);
var sl: TStringList; begin sl := TStringList.Create; try sl.Sorted := True; sl.Duplicates := dupIgnore; sl.AddStrings(Quick.Process.GetProcessList); // bug: Creates memory-leak //CodeSite.Send('TForm1.tsProcessListsShow: sl', sl); lstProcesses.Items.Assign(sl); finally sl.Free; end; end;
Code:
Quick.Process.GetProcessList(sl);
|
AW: Bug in QuickLib
Lieder läßt sich die Bibliothek QuickLib mit Delphi XE5 nicht kompilieren, weil sie neuere Sprachelemente wie Inline-Deklarationen etc. verwendet.
Euch allen schöne Weihnachten & gute Gesundheit! Gruß, Andreas |
AW: Bug in QuickLib
Zitat:
Delphi-Quellcode:
procedure TForm1.tsProcessListsShow(Sender: TObject);
var sl: TStringList; begin sl := Quick.Process.GetProcessList; try sl.Sort; //CodeSite.Send('TForm1.tsProcessListsShow: sl', sl); lstProcesses.Items.Assign(sl); finally sl.Free; end; end; Zitat:
oder mir einen anderen Typen als Result raussuchen, bzw. wie beim Assign/AddStrings die StringList nicht erstellen, sondern nur befüllen. |
AW: Bug in QuickLib
Zitat:
|
AW: Bug in QuickLib
Zitat:
Wie gesagt, besser wäre es zu diesem Zweck, wenn man der Funktion GetProcessList eine existierende StringList als var-Parameter übergeben könnte. |
AW: Bug in QuickLib
Das ist doch eine firsche Liste?
Dann sollte doch eh jeder Prozess nur einmal drin sein. :stupid: |
AW: Bug in QuickLib
Zitat:
|
AW: Bug in QuickLib
Der nächste Bug in dieser Komponente?
Delphi-Quellcode:
Ich weiß jetzt nicht wie diese Komponente intern arbeitet, aber eine StringListe lässt sich auch so sortieren und aufräumen.
sl := Quick.Process.GetProcessList;
try sl.Sort; for var i := SL.Count - 2 downto 0 if sl[i] = sl[i+1] then sl.Delete(i); //CodeSite.Send('TForm1.tsProcessListsShow: sl', sl); lstProcesses.Items.Assign(sl); finally sl.Free; end;
Delphi-Quellcode:
sl.Sorted := True;
sl.Duplicates := dupIgnore; sl.Text := sl.Text; |
AW: Bug in QuickLib
Zitat:
Zitat:
Delphi-Quellcode:
Aber es funktioniert!
sl.Text := sl.Text;
|
AW: Bug in QuickLib
Es gibt für die QuickLib ein Github-Repository mit eigenem Bugtracker
https://github.com/exilon/QuickLib/issues |
AW: Bug in QuickLib
Zitat:
Ich wollte den Logger mal probieren und da war ich nach 5 Minuten mit durch, dass es für mein XE5 kompiliert. Ich finde nur Schade, dass die Macher das nicht berücksichtigen und nur die neuen Delphi's unterstützen. |
AW: Bug in QuickLib
Ja, das ist wirklich schade, denn die älteren Delphi-Versionen bleiben dadurch ausgesperrt. Andererseits muß man auch nicht alle neuen Feautres unbedingt benutzen, denn nicht alles ist ein echter Fortschritt. Gerade die in QuickLib verwendeten Inline-Deklarationen tragen nicht gerade zur Übersichtlichkeit bei, und erinnern eher an alte Basic-Manieren, wo Variablen undeklariert (oder durch Tippfehler) aus dem Nichts auftauchen durften. Gerade die prägnanteste Eigenschaft von Pascal – seine Klarheit und Diszipliniertheit – leidet darunter. Schade, in doppelter Hinsicht…
Zitat:
Vielleicht "verirrt sich" der Entwickler von in QuickLib auch mal nach Delphi-Praxis-Land und liest unsere Anregungen. Gruß, Andreas PS: Euch allen einen guten Rutsch in ein gesundes, glückliches und hoffentlich besseres Neues Jahr 2021! |
AW: Bug in QuickLib
Einfach Repository klonen und Änderungen pushen.
|
AW: Bug in QuickLib
Sorry, damit habe ich gar keine Erfahrung...:oops:
Andreas |
AW: Bug in QuickLib
Ich habe den DP Fork erzeugt. Wenn jemand Änderungen hat kann er diese hier bereitstellen.
https://github.com/DelphiPraxis/QuickLib |
AW: Bug in QuickLib
Danke! :thumb:
Andreas |
AW: Bug in QuickLib
Ich hab den Code nochmal seit damals angeschaut.
Die Cloud Dateien bekomme ich nicht so schnell hin. Da ist Quelltext, den ich nicht blicke, wie der funktionieren soll. Auch die Array Sachen sind etwas mehr fummelig. Die Inlines sind einfach. Die Sachen, welche ich damals für den Logger umstellen musste, waren auch nur paar Inline Var Befehle. Jetzt beim genauen hinschauen doch aufwendiger. Schade |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 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