Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   RtlVclOptimize 2.77 - DelphiSpeedUp Code im eigenen Programm (https://www.delphipraxis.net/91692-rtlvcloptimize-2-77-delphispeedup-code-im-eigenen-programm.html)

jbg 8. Mai 2007 19:38


RtlVclOptimize 2.77 - DelphiSpeedUp Code im eigenen Programm
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hatte eigentlich vor an den Delphi Tagen 2007 eine Unit mit den Optimierungen von DelphiSpeedUp vorzustellen. Jedoch kam mir etwas dazwischen, wodurch ich nicht an den Delphi Tagen 2007 teilnehmen konnte und auch keine Zeit hatte, diese Unit für die Öffentlichkeit aufzubereiten.

Wer also schon immer mal die Optimierungen aus DelphiSpeedUp in seinem eigenen Programmen haben wollte, kann sich nun die RtlVclOptimize.pas Unit herunterladen und sie in seine Projekte einbinden.


Installationsanleitung
  • 1. Entpacken der RtlVclOptimize.zip in einen beliebigen Ordner.
  • 2. Die Unit zum Delphi-Projekt hinzufügen. Am besten recht weit oben in der uses-Liste, da dadurch bereits die initialization-Abschnitte der andere Units auf die schnelleren Funktionen zugreifen.
Was gibt es zu beachten
  • Die Unit muss in der EXE-Datei stecken und nicht in einem Package. Denn würde das Package entladen, könnte man sich vor den auftretenden Zugriffsverletzungen nicht retten, weil die Funktionen auf die die original-RTL Funktionen umgeleitet werden, nicht mehr im Speicher sind.
Was ist RtlVclOptimize.pas nicht, bzw. was fehlt im Vergleich zu DelphiSpeedUp
  • Die Unit ist nicht die FastCode Library. Diese muss extra heruntergeladen werden, wenn man deren RTL-Optimierungen zusätzlich nutzen will.
  • FastObj ist nicht enthalten
  • Sämtliche nur für die IDE interessante Optimierungen fehlen
Lizenz
  • Die Unit steht unter der MPL 1.1. Darf also auch in kommerziellen/closed-source Anwendungen eingesetzt werden

Gecko 3. Jun 2007 00:59

Re: RtlVclOptimize - DelphiSpeedUp Code in eigenen Programme
 
Da sag ich mal danke fürs frisieren ;)
Wo bekomme ich die FastCode Libary?

Garfield 15. Sep 2007 22:10

Re: RtlVclOptimize - DelphiSpeedUp Code in eigenen Programme
 
http://fastcode.sourceforge.net/

Luckie 15. Sep 2007 22:42

Re: RtlVclOptimize - DelphiSpeedUp Code in eigenen Programme
 
Werden dadurch mit Delphi erstellte Programme schneller gestartet oder was bringt diese Unit in einem Programm für Vorteile?

jbg 15. Sep 2007 22:50

Re: RtlVclOptimize - DelphiSpeedUp Code in eigenen Programme
 
Ob sie schneller starten, wage ich zu bezweifeln, weil das ja IDE spezifische Optimierungen sind. Aber die eigenen Programme werden ein klein wenig schneller. Vor allem die String-Vergleiche mit "if S <> 'str' then" oder "if S = 'str' then" gehen um einiges schneller, da keine kleiner oder größer Information beim Vergleich ermittelt werden muss.

Auch die TList/TObjectList wird durch die Unit stark beschleunigt. Dynamische/Message Methoden werden schneller aufgerufen. Zwar immernoch langsamer als virtuelle, aber bis zu 8 mal so schnell als vorher. Und noch einiges mehr.

Mit FastCode kombiniert ergibt das einen größeren Geschwindigkeitsschub.

Luckie 15. Sep 2007 22:53

Re: RtlVclOptimize - DelphiSpeedUp Code in eigenen Programme
 
Das ist natürlich ein Wort. Für normale Anwendungen wird es sich wahrscheinlich nicht lohnen aber für Parser wäre es bestimmt interessant.

Bernhard Geyer 16. Sep 2007 00:15

Re: RtlVclOptimize - DelphiSpeedUp Code in eigenen Programme
 
Zitat:

Zitat von jbg
Ob sie schneller starten, wage ich zu bezweifeln, weil das ja IDE spezifische Optimierungen sind. Aber die eigenen Programme werden ein klein wenig schneller. Vor allem die String-Vergleiche mit "if S <> 'str' then" oder "if S = 'str' then" gehen um einiges schneller, da keine kleiner oder größer Information beim Vergleich ermittelt werden muss.

Da könnte ich bei unserer SW schon ein paar Bottlenecks entschärfen.
Mal schauen ob ich in den nächsten Wochen ein paar "ruhige" Stunden finde ...

jbg 16. Sep 2007 00:32

Re: RtlVclOptimize - DelphiSpeedUp Code in eigenen Programme
 
Naja, das mit den "if S <> 'str' then", "if S = 'str'" spürt man hauptsächlich bei Delphi 5 bis 2006. Ab Delphi 2007 ist bereits eine schnellere String-Vergleichsfunktion eingebaut, wo das Equal, NotEqual fast nichts mehr herausholen kann.

Bernhard Geyer 16. Sep 2007 09:33

Re: RtlVclOptimize - DelphiSpeedUp Code in eigenen Programme
 
Zitat:

Zitat von jbg
Naja, das mit den "if S <> 'str' then", "if S = 'str'" spürt man hauptsächlich bei Delphi 5 bis 2006. Ab Delphi 2007 ist bereits eine schnellere String-Vergleichsfunktion eingebaut, wo das Equal, NotEqual fast nichts mehr herausholen kann.

Hab noch D6 im Haupteinsatz :-)

Corpsman 16. Sep 2007 14:16

Re: RtlVclOptimize - DelphiSpeedUp Code in eigenen Programme
 
LOL,

Ich schreib grad zufällig nen Parser für meinen Raytracer ;).

Diese Unit kommt mir daher mehr als nur gelegen.

Sehe ich das Richtig mit Einbinden meinst du das in etwa so :

Delphi-Quellcode:

Program Simple_Ray;

Uses
  // Bewirkt das die Sringvergleiche deutlich schneller werden.
  RtlVclOptimize,
  Forms,
  unCommenter In '..\..\DatenSteuerung\Tokenizer\UnCommenter.pas',
  Tokenizer In '..\..\DatenSteuerung\Tokenizer\Tokenizer.pas',
  Unit1 In 'Unit1.pas' {Form1},
  Raytracer In 'Raytracer.pas',
  Raytracer_Math In 'Raytracer_Math.pas',
  RayParser In 'RayParser.pas',
  Unit2 In 'Unit2.pas' {Form2};

{$R *.RES}

Begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.Run;
End.
Hab das zumindest nu mal so gemacht.

Ich nutze Delphi 5 und normalerweise sind in der unit Links dann lauter blaue Punkte ( überall bei dem Code den er Nutzt ).

Nach dem Compilieren des Projects sind in der RtlVclOptimize unit aber keine Blauen Punkte.

Tut ads dann Trotzdem ?

jbg 16. Sep 2007 15:22

Re: RtlVclOptimize - DelphiSpeedUp Code in eigenen Programme
 
Zitat:

Zitat von Corpsman
Sehe ich das Richtig mit Einbinden meinst du das in etwa so :

Ja.

Zitat:

Nach dem Compilieren des Projects sind in der RtlVclOptimize unit aber keine Blauen Punkte.
Das liegt daran, dass die DebugInfos für die Unit abgeschaltet sind. Wenn du unbedingt bei jedem F7 in dieser Unit landen willst, kannst du ja das DEFINE in der Unit für die DebugInfos aktivieren (Den führenden Punkt aus {.$DEFINE RTLDEBUG} entfernen.

Corpsman 16. Sep 2007 16:42

Re: RtlVclOptimize - DelphiSpeedUp Code in eigenen Programme
 
thx für die Info,

Nein mir gings net ums Debuggen.

Ich hab zwar hier und da schon was in Delphi Geproggt ( siehe Balanced ... )

Aber der Profi bin ich deswegen noch net.

Ich verstehe gerne was ich da mache. Und wenn ich was net versteh frage ich.

jbg 1. Okt 2007 23:04

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Ich habe mir mal die Mühe gemacht und RtlVclOptimize.pas auf den Stand von DelphiSpeedUp 2.7 zu bringen. Die Versionsnummern habe ich dabei auch gleichgezogen.

Download im ersten Thread-Posting

Hawkeye219 2. Okt 2007 00:05

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Vielen Dank für die neuen Versionen von DelphiSpeedup und RtlVclOptimize, Andreas!

btw: kleiner Tippfehler auf der Download-Seite: Die Datei "RtlVclOptimize.zip" wird angekündigt mit "Download DDevExtensions 2.7".

Gruß Hawkeye

jbg 2. Okt 2007 00:10

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Zitat:

Zitat von Hawkeye219
kleiner Tippfehler

Wie meinen? :mrgreen:

bigg 2. Okt 2007 00:15

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Andreas,

ich habe eben deine Unit getestet. Dabei ist mir aufgefallen, dass beim Beenden einer beliebigen Anwendung Speicherblöcke nicht richtig freigegeben werden.

Speichermanager: FastMM 4.78
IDE: Delphi 7 PE

Eine Demo liegt bei.

jbg 2. Okt 2007 00:16

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Das sind die reallozierten Dynamic Method Tables. Die kann ich nicht freigeben, da sonst das gesamte Programm abstürzen würde. Da muss ich wohl auf GlobalAlloc ausweichen.

jbg 2. Okt 2007 00:26

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Ich habe schnell noch eine neue Version hochgeladen, die die gewollten Speicherlecks vor dem Speichermanager "versteckt".

bigg 2. Okt 2007 00:43

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Die von dir korrigierte Version läuft schon mal ohne rum zu murren.
Ich werde sie mir morgen nochmal genauer anschauen und einige dinge testen.

marc_ki 3. Okt 2007 12:43

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Die Fastfileexists hat einen kleinen schönheitsfehler im vergleich zum original. Das original nimmt auch wildcards, die optimierte variante scheinbar nicht...

jbg 3. Okt 2007 13:06

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Zitat:

Zitat von marc_ki
Die Fastfileexists hat einen kleinen schönheitsfehler im vergleich zum original. Das original nimmt auch wildcards, die optimierte variante scheinbar nicht...

Dann rate ich dir mal ganz schnell davon ab, diese nicht dokumentierte Funktionalität von FileExists zu nutzen. Denn ab Delphi 2006 ist FileExists genau so implementiert wie FastFileExists.

jbg 3. Okt 2007 13:10

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Ach ja und ab Delphi 2007 funktioniert diese undokumentierte Funktionalität auch nicht mehr mit FileAge().

bigg 3. Okt 2007 13:39

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
moin,

ich habe noch eine Kleinigkeit gefunden:
Die Funktion FastFileExists() findet die Auslagerungsdatei "pagefile.sys" nicht.

Ist das bei D2005-D2007 auch der Fall? :gruebel:

Testsystem: XPSP2, Delphi 7 PE




Gruß Stefan

jbg 3. Okt 2007 13:52

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Zitat:

Zitat von bigg
Ist das bei D2005-D2007 auch der Fall? :gruebel:

Ja, da hast du wohl voll ins Schwarze getroffen (wer prüft denn schon auf die Existenz der Auslagerungsdatei).

Delphi-Quellcode:
function FileExists(const Filename: string): Boolean;
var
  Code: Integer;
begin
  Code := Integer(GetFileAttributes(PChar(FileName)));
  if Code <> -1 then
    Result := (FILE_ATTRIBUTE_DIRECTORY and Code = 0)
  else
    Result := GetLastError = ERROR_SHARING_VIOLATION;
end;
Da werde ich gleich mal einen QualityCentral Report aufmachen.

bigg 3. Okt 2007 14:08

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Zitat:

Zitat von jbg
Ja, da hast du wohl voll ins Schwarze getroffen (wer prüft denn schon auf die Existenz der Auslagerungsdatei).

Vermutlich nur ich? :nerd: :cheers:
Du hast den Fehler ja schon behoben?!. Das ging flott.

ps: Die abgewandelten Listen sehen auch sehr schmackhaft aus, die werde ich mir auch noch vorknöpfen.


Gruß Stefan

jbg 3. Okt 2007 14:15

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
http://qc.codegear.com/wc/qcmain.aspx?d=52905

bigg 3. Okt 2007 14:34

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Das WorkArround funktioniert bei mir nicht. Die Funktion Windows.GetLastError liefert bei mir den Wert 5 "Zugriff verweigert", wenn ich die "pagefile.sys" auf Existenz überprüfe.

So geht's:

Delphi-Quellcode:
function MyFileExists(const Filename: string): Boolean;
var
  Code: Integer;
  LastError: Integer;
begin
  Code := Integer(Windows.GetFileAttributes(PChar(FileName)));
  if Code <> -1 then
    Result := (FILE_ATTRIBUTE_DIRECTORY and Code = 0)
  else
  begin
    LastError := Windows.GetLastError;
    Result   := (LastError = ERROR_ACCESS_DENIED);
  end;
end;

Gruß Stefan

mirage228 3. Okt 2007 14:38

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Hi,

Ich erhalte für die pagefile.sys ERROR_SHARING_VIOLATION (und nicht ERROR_ACCESS_DENIED)... :gruebel:

mfG
mirage228

bigg 3. Okt 2007 14:40

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Dann verknüpfen wir das ganze mit or? :P

Delphi-Quellcode:
function MyFileExists(const Filename: string): Boolean;
var
  Code: Integer;
  LastError: Integer;
begin
  Code := Integer(Windows.GetFileAttributes(PChar(FileName)));
  if Code <> -1 then
    Result := (FILE_ATTRIBUTE_DIRECTORY and Code = 0)
  else
  begin
    LastError := Windows.GetLastError;
    Result   := (LastError = ERROR_ACCESS_DENIED) or (LastError = ERROR_SHARING_VIOLATION);
  end;
end;
ps: Bin mit Adminrechten unterwegs, WinXP SP2 und D7PE.


Gruß Stefan

mirage228 3. Okt 2007 14:41

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Zitat:

Zitat von bigg
Dann verknüpfen wir das ganze mit or? :P

Wäre ne Idee :mrgreen: - Es sei denn es gibt noch mehr Fehler die GetLastError in dem Fall liefern könnte...

jbg 3. Okt 2007 15:50

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Zitat:

Zitat von mirage228
Es sei denn es gibt noch mehr Fehler die GetLastError in dem Fall liefern könnte...

Das weiß wohl nur Microsoft. Wieso muss eigentlich GetFileAttributes schief gehen, wenn die Datei gesperrt ist. Ich will sie ja nicht öffnen. Aber das werden wir wohl nie erfahren.

jbg 3. Okt 2007 16:00

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Das mit ACCESS_DENIED ist so eine Sache. Wenn man auf ein Verzeichnis zugreift, auf das man keine Leserechte hat, bekommt man auch ein Access Denied zurück.

Also wenn man auf die Datei 'C:\Gesperrt\NichtVorhanden.txt' prüfen will und man keine Leserechte in "Gesperrt" hat, dann kommt ACCESS_DENIED zurück, auch wenn die Datei nicht existiert. Wenn man nun True zurückliefern würde, könnte das Fatale Folgen haben.

jbg 3. Okt 2007 16:22

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Wie wäre es mit dieser Funktion:
Delphi-Quellcode:
function FileExists(const Filename: string): Boolean;

  function FailSafe(const Filename: string): Boolean;
  var
    FindData: TWin32FindData;
    h: THandle;
  begin
    { Either the file is locked/share_exclusive or we got an access denied }
    h := FindFirstFile(PChar(Filename), FindData);
    if h <> 0 then
    begin
      Windows.FindClose(h);
      Result := FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY = 0;
    end
    else
      Result := False;
  end;

var
  Code: Integer;
  LastError: Cardinal;
begin
  Code := Integer(GetFileAttributes(Pointer(FileName)));
  if Code <> -1 then
    Result := (FILE_ATTRIBUTE_DIRECTORY and Code = 0)
  else
  begin
    LastError := GetLastError();
    Result := (LastError <> ERROR_FILE_NOT_FOUND) and
              (LastError <> ERROR_PATH_NOT_FOUND) and
              FailSafe(Filename);
  end;
end;

bigg 3. Okt 2007 16:46

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Die von dir gepostete Version macht bei mir keine Anstalten. Wobei man dann gleich mit Windows.FindFirstFile arbeiten könnte.

Zur Übersicht, hier noch die D7-Original-Fassung:
Der rot eingefärbte Teil könnte raus.

Zitat:

Zitat von D7-RTL
function FileAge(const FileName: string): Integer;
var
Handle: THandle;
FindData: TWin32FindData;
LocalFileTime: TFileTime;
begin
Handle := FindFirstFile(PChar(FileName), FindData);
if Handle <> INVALID_HANDLE_VALUE then
begin
Windows.FindClose(Handle);
if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
begin
FileTimeToLocalFileTime(FindData.ftLastWriteTime, LocalFileTime);
if FileTimeToDosDateTime(LocalFileTime, LongRec(Result).Hi,
LongRec(Result).Lo) then Exit;
end;

end;
Result := -1;
end;


function FileExists(const FileName: string): Boolean;
begin
Result := FileAge(FileName) <> -1;
end;


jbg 3. Okt 2007 16:48

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Zitat:

Zitat von bigg
Wobei man dann gleich mit Windows.FindFirstFile arbeiten könnte.

Wenn du dein System ausbremsen willst, kannst du das ja gerne machen.

bigg 3. Okt 2007 17:36

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Zitat:

Zitat von jgb
Wenn du dein System ausbremsen willst, kannst du das ja gerne machen.

Jein.
Der Leistungsgewinn von etwa 100% überzeugen mich dann doch. :mrgreen:
Wobei deine Funktion im WorstCase (pagefile.sys) recht bescheiden weg kommt. *hüstel*

Delphi-Quellcode:
function RTL_MOD_FileExists(const FileName: String): Boolean;
var
  Handle: THandle;
  FindData: TWin32FindData;
begin
  Result := False;
  Handle := Windows.FindFirstFile(PChar(FileName), FindData);

  if Handle <> INVALID_HANDLE_VALUE then
  begin
    Result := ( (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 );
    Windows.FindClose(Handle);
  end;
end;


function jgbFileExists(const Filename: string): Boolean;

  function FailSafe(const Filename: string): Boolean;
  var
    FindData: TWin32FindData;
    h: THandle;
  begin
    { Either the file is locked/share_exclusive or we got an access denied }
    h := Windows.FindFirstFile(PChar(Filename), FindData);
    if h <> 0 then
    begin
      Windows.FindClose(h);
      Result := FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY = 0;
    end
    else
      Result := False;
  end;

var
  Code: Integer;
  LastError: Cardinal;
begin
  Code := Integer(Windows.GetFileAttributes(Pointer(FileName)));
  if Code <> -1 then
    Result := (FILE_ATTRIBUTE_DIRECTORY and Code = 0)
  else
  begin
    LastError := Windows.GetLastError();
    Result := (LastError <> ERROR_FILE_NOT_FOUND) and
              (LastError <> ERROR_PATH_NOT_FOUND) and
              FailSafe(Filename);
  end;
end;



procedure TForm1.Button1Click(Sender: TObject);
var b: Boolean;
    i: Integer;
    Start: Cardinal;
    s, FileName: String;
begin
  i := 0;
  Start := Windows.GetTickCount;
  //FileName := 'C:\pagefile.sys';
  FileName := 'C:\boot.ini';

  repeat
    //b := jgbFileExists(FileName);
    b := MyFileExists(FileName);
    inc(i);
  until (i > 100000);

  if b then
    s := 'True'
  else
    s := 'False';

  ShowMessage( IntToStr(Windows.GetTickCount - Start) + ' ms' + #13#10 + s);
end;

Gruß :hi:

jbg 3. Okt 2007 17:47

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Zitat:

Zitat von bigg
Wobei deine Funktion im WorstCase (pagefile.sys) recht bescheiden weg kommt. *hüstel*

Die Frage ist wohl eher, wie oft man denn auf pagefile.sys prüft. In meinem ganzen Leben habe das nicht ein mal gemacht. Der Worst Case tritt bei mir also nie ein.

bigg 3. Okt 2007 18:02

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Zitat:

Zitat von jbg
Die Frage ist wohl eher, wie oft man denn auf pagefile.sys prüft. In meinem ganzen Leben habe das nicht ein mal gemacht. Der Worst Case tritt bei mir also nie ein.

Abwarten und Tee trinken heißt hier die Devise.
Wobei es ja nicht nur um die Pagefile.sys ging, sondern eher um den vielleicht eintreffenden Fehlerfall, sprich die Datei ist geöffnet, schreibgeschützt und andere Prozesse dürfen auf sie nicht zugreifen. Das das der seltenste Fall sein dürfte, wissen wir ja beide.

btw: Das waren jetzt zwei ganze Seiten für eine poplige Funktion. :lol:
Aber der Aufwand hat sich gelohnt.

jbg 3. Okt 2007 18:07

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Zitat:

Zitat von bigg
btw: Das waren jetzt zwei ganze Seiten für eine poplige Funktion. :lol:

Zwei Seiten. Dann rate mal wie viele Tage und Wochen ich über eine schnellere Version von irgendwelchen RTL/VCL/IDE Funktionen brüte. Das was ihr immer seht, ist nur der bereits getestete Code.

bigg 3. Okt 2007 18:20

Re: RtlVclOptimize 2.7 - DelphiSpeedUp Code im eigenen Progr
 
Klar, das war auch keine Beschwerde meinerseits. Im übrigen kenne ich die Problemmatiken des Programmierens.
Insbesondere wenn man mehrere Anwendungen entwickelt, da sitzt man schon ein paar Jährchen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:37 Uhr.
Seite 1 von 2  1 2      

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