Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi STL Standard Delphi Library für Delphi Win32 (https://www.delphipraxis.net/82655-stl-standard-delphi-library-fuer-delphi-win32.html)

radekj 17. Dez 2006 14:50


STL Standard Delphi Library für Delphi Win32
 
Hallo,

seit 1998 gibt es die freie Standard Delphi Library für Delphi Win32 "DeCAL" (gohostet by sourceforge),
ein muss für jeden professionellen Delphi Programmierer.

Sie ist praktisch ein Abbild der STL für C++ mit Containern, Interators etc.

Sie beschleunigt die Entwicklumg jedes Projektes und verbessert die Lesbarkeit des Codes.

ciao
Radek

GimbaR 17. Dez 2006 15:59

Re: STL Standard Delphi Library für Delphi Win32
 
Aha, und wozu is sowas gut und wie beschleunigt es die Entwicklung jedes Projektes oder verbessert die Lesbarkeit des Codes? :gruebel:

radekj 17. Dez 2006 16:10

Re: STL Standard Delphi Library für Delphi Win32
 
Beispiel:
Delphi-Quellcode:
procedure Test();
var
DummeFragen: DMap;
begin
DummeFragen := DMap.Create;
DummeFragen.purPair('Frage1', 'aaa...');
DummeFragen.purPair('Frage2', 'bbb...');
DummeFragen.purPair('Frage3', 232); <- Zahl !!!
DummeFragen.purPair('Frage4', 'ccc...');

//finde und zeige Frage 2 (string)
ShowMessage( getString(DummeFragen.locate(['Frage2'])) );

//finde und zeige Frage3 (eine Zahl !!!)
ShowMessage(IntToStr( getInteger(DummeFragen.locate(['Frage3'])) ));

DummeFragen.Free;
end;
Versuche das mit TList zu machen !!!


oder etwas komplexer:

We have two classes of students. Some students can be in both classes. We want to find
every student whose grade is above 80 in both classes, making sure that we remove
duplicates (because students might be in both classes). Then we want to sort the students by
their names, in reverse alphabetical order. Here’s the code:
Delphi-Quellcode:
Procedure test;
 Var class1, class2 : DMap;
 GoodStudents : DArray;
 I : Integer;
 Iter1, Iter2 : DIterator;
Begin

 // fill our classes with random students and grades
 class1 := DMap.Create;
 class2 := DMap.Create;

 for I := 1 to 25 do
 begin
  class1.putPair([Random(100), RandomName]);
  class2.putPair([Random(100), RandomName]);
 end;

 goodStudents := DArray.Create;
 iter1 := class1.lower_bound([80]);
 iter2 := class2.lower_bound([80]);
 setIntersectionIn(iter1, class1.finish, iter2, class2.finish, goodStudents.finish);
 reverse(goodStudents);
 PrintContainer(goodStudents);

 FreeAll([class1, class2, GoodStudents]);
end;
ciao
Radek

Dax 17. Dez 2006 16:18

Re: STL Standard Delphi Library für Delphi Win32
 
Hi radekj, du kannst deine Beiträge auch editieren, einen neuen aufmachen ist erst nach 24 Stunden ein Muss.. ;)

GimbaR 17. Dez 2006 16:36

Re: STL Standard Delphi Library für Delphi Win32
 
Ja, das sieht wirklich hilfreich aus :o
Da hätte ich auch gleich mal ne Frage: Kann ich auch überprüfen von welchem Typ die daten sind? Quasi anstatt
Delphi-Quellcode:
getInteger
schreib ich dann
Delphi-Quellcode:
if IsInteger(['Frage3'] then getInteger(...
:?: :?: :?:

PS: Es gibt keine dumme Fragen, nur... ;)

radekj 17. Dez 2006 16:37

Re: STL Standard Delphi Library für Delphi Win32
 
Ja.

Aber das ist nur eine von viellen Besonderheiten von STL das man Typen in Conteiner einfach mischen kann,
es wird über "array of const" und "TVaRec" Typen gemacht.

Ich behaupte das Delphi + STL + LOKALE SQL-Engine das mächtigste Entwicklumgs-Umgebung ist.

radek

jbg 17. Dez 2006 16:47

Re: STL Standard Delphi Library für Delphi Win32
 
Zitat:

Zitat von radekj
seit 1998 gibt es die freie Standard Delphi Library für Delphi Win32 "DeCAL" (gohostet by sourceforge),
ein muss für jeden professionellen Delphi Programmierer.

Das Projekt sieht für mich recht tot aus. Das letzte Release stammt aus dem Jahr 2000, in dem auch die letzte Änderung im CSV gemacht wurde.

radekj 17. Dez 2006 16:52

Re: STL Standard Delphi Library für Delphi Win32
 
Die DeCAL-STL für Delphi war 1998 fertig entwickelt und war bis ca. 2000 ein komerzielles Produkt.
Also es gab nichts zu tun, sie ist seit 1998 stabil.

Das OpenSource Projekt hat an der DeCAL nichts gemacht.

Ich benutze Sie seit 1998, und ich lebe von Programmierung !

Radek

jbg 17. Dez 2006 17:09

Re: STL Standard Delphi Library für Delphi Win32
 
Zitat:

Zitat von radekj
Das OpenSource Projekt hat an der DeCAL nichts gemacht.

Das ist ja das Problem. 6 Jahre in dieser Branche sind eine halbe Ewigkeit. Und wenn ich so über den Code blättere fallen mir da schon ein paar Stellen auf, die man lieber anders lösen sollte (abgesehen vom in Pascal/Delphi unüblichen lowerCamelCase). Schon alleine die vielen globalen Funktionen (getString(), getCurrency(), ...) würden mich abschrecken. Die würden besser in einen Namespace gehören und nicht wie wild im Unit Namespace herumliegen. Bei getString und Konsorten wäre das einbauen in DInterator sogar besser. Das UniqueString() im getString() bremst auch nur aus. Wenn der Aufrufer den String in einen PChar umwandelt möchte, sollte er sich selbst darum kümmern, dass der String unique ist was er sonst ja auch muss. Das einfach mal prinzipiell durchzuführen ist nichts anderes als eine unnötige Geschwindigkeitsbremse.

Und das nur beim schnellen drüberschauen.

Thorben77 17. Dez 2006 17:15

Re: STL Standard Delphi Library für Delphi Win32
 
Zitat:

Zitat von radekj
Hallo, seit 1998 gibt es die freie Standard Delphi Library für Delphi Win32 "DeCAL" (gehostet by sourceforge),
ein muss für jeden professionellen Delphi Programmierer.

Wie wärs mal mit einem Link? Ich schaff es irgendwie nicht, das Projekt bei Sourceforge zu finden :oops:

jbg 17. Dez 2006 17:23

Re: STL Standard Delphi Library für Delphi Win32
 
http://www.sourceforge.net/projects/decal

Es gibt auch noch ein decaldev Projekt bei Sourceforge, aber das ist was völlig anderes.

radekj 17. Dez 2006 17:23

Re: STL Standard Delphi Library für Delphi Win32
 
Bitte erst lesen !

Es handelt sich um STL für Delphi WIN32 !!!

und nicht das ultra langsame unübersichtige und aus 1001 dlls bestehende Black-Box .NET !!!

also keine Namespaces, UniqueStrings etc...

ciao
Radek

Dax 17. Dez 2006 17:46

Re: STL Standard Delphi Library für Delphi Win32
 
Zitat:

Zitat von radekj
ultra langsame

Falsch. .NET ist manchmal schneller als Delphi, meist kaum langsamer.

Zitat:

Zitat von radekj
unübersichtige

Falsch. Die Klassen sind im Framework ihren Bestimmungen entsprechend angeordnet - aber manchmal in der Tat etwas verwirrend.


Zitat:

Zitat von radekj
1001 dlls bestehende Black-Box .NET

Auch falsch. Du ziehst dir ein mal den Installer (eine .msi) und hast das komplette Framework. Dass es viele .dlls enthält mag stimmen, aber am Ende hast du damit kein Problem - du lieferst einfach den FX-Installer mit.

jbg 17. Dez 2006 18:01

Re: STL Standard Delphi Library für Delphi Win32
 
Zitat:

Zitat von radekj
Bitte erst lesen !

Habe ich. Nur scheint da jemand nicht zu wissen, dass Units und Klassen auch Namensräume sind. Und UniqueString() eine Funktion in SysUtils ist.

radekj 18. Dez 2006 16:17

Re: STL Standard Delphi Library für Delphi Win32
 
Zitat:

Zitat von Dax
Zitat:

Zitat von radekj
ultra langsame

Falsch. .NET ist manchmal schneller als Delphi, meist kaum langsamer.

Zitat:

Zitat von radekj
unübersichtige

Falsch. Die Klassen sind im Framework ihren Bestimmungen entsprechend angeordnet - aber manchmal in der Tat etwas verwirrend.


Zitat:

Zitat von radekj
1001 dlls bestehende Black-Box .NET

Auch falsch. Du ziehst dir ein mal den Installer (eine .msi) und hast das komplette Framework. Dass es viele .dlls enthält mag stimmen, aber am Ende hast du damit kein Problem - du lieferst einfach den FX-Installer mit.

Weil MFC so toll war und .NET ist

hat Microsoft die MFC und jetzt die .NET nie für die internen Projekte (Office, Windows etc.) verwendet, sondern die Microsoft's Active Template Library).

Warum wohl ?!

Radek

Robert Marquardt 18. Dez 2006 16:37

Re: STL Standard Delphi Library für Delphi Win32
 
Ich finde die STL nicht besonders nuetzlich. Alles schoen abstrakt, aber genau das macht dem Durchschnittsprogrammierer Probleme.
Das womit mit einem Delphi-Programm meist Geld verdient wird, ist ueblicherweise doch eher simpel. Da steht die Leistungsfaehigkeit und der Abstraktionsgrad der STL eher im Weg.
Die Staerke von Delphi liegt eher im Bereich Oberflaeche machen und Datenbank ansteuern. Da versagt die STL fast voellig, denn die Oberflaeche braucht meist nur simple Event-Handler und der Datenbankzugriff geht ueber massgeschneiderte Komponenten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:39 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 by Thomas Breitkreuz