AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte ScriptEngine II (v. 0.6.1)
Thema durchsuchen
Ansicht
Themen-Optionen

ScriptEngine II (v. 0.6.1)

Ein Thema von littleDave · begonnen am 21. Sep 2009 · letzter Beitrag vom 4. Aug 2011
Antwort Antwort
Seite 10 von 12   « Erste     8910 1112      
Benutzerbild von littleDave
littleDave
Registriert seit: 27. Apr 2006
Hallo liebe DP'ler

ScriptEngineII


ist der Nachfolger meiner letzten ScriptEngine. Da es sich um ein komplettes Remake handelt, sind die beiden jedoch nicht mehr vergleichbar.

Kurzübersicht
  • Die Script-Engine bnutzt Object-Pascal als Script-Sprache und unterstützt objekt-orientierte Programmierung.
  • Der Quelltext wird in ByteCode übersetzt, der dann von einer optimierten RunTime ausgeführt wird
  • Trotz der Möglichkeiten ist das Interface der Komponente sehr klein und übersichtlich gehalten
  • Für den Einstieg habe ich eine kleine Doku in Form eines PDFs mit in den Download gepackt

Installation
In der ZIP-Datei befindet sich ein Unterordner "src". Diesen extrahiert ihr einfach in einen Ordner eurer Wahl und fügt diesen Ordner dann in den Bibliothekspfad von Delphi hinzu. Im Quelltextorder befindet sich die Datei "ScriptEngine.inc". Diese Datei kann zum konfigurieren der ScriptEngine benutzt werden. Die einzelnen Defines sind (hoffentlich) ausreichend erklärt.

Benötigte Delphi-Version
Bisher hab ich es nur mit Delphi 7 und mit Lazarus getestet. Unter FreePascal hab ich nur ein paar Tests ausgeführt und diese sind auch korrekt gelaufen. Unter Delphi 2009/2010 hab ich die ScriptEngine ebenfalls erfolgreich getestet.

Besonderheiten
  • wenn man innerhalb einer Klassenmethode auf andere Klassenmethoden oder -Variablen zugreifen will, muss man immer "Self" mit angeben
    Update 10.10.2010
    Mit der Version ist 0.5.4.1 ist das nun nicht mehr notwendig!
  • Records sind Referenz-Typen

Bisherige Probleme
Im Moment sind noch folgende Probleme vorhanden:
  • überladene Methoden haben bisher folgende Einschränkung:
    • sie müssen alle vom selben Typ sein (statisch, nicht statisch)
  • der Befehl reintroduce ist noch nicht vorhanden

Lizenz
MPL v1.1 , GPL v3.0 oder LGPL v3.0

Feature-Liste
  • Übersicht
    • Object-Pascal als Dialekt
    • Ganzzahltypen: byte, shortint, word, smallint, cardinal, integer, int64
    • Fließkommatypen: single, double
    • Stringtypen: string, UTF8String, WideString
    • Operatoren: + - * / div mod shr shl and or xor not @
    • Vergleich: = < > <= >= <> is
    • Schleifen: for while repeat for-in-do
    • Datenvergleich: if case
    • Spezielle Blocks: try-finally / try-except
    • Konstanten
    • verschachtelte Unit-Namen (z.B. Unit1.SubUnit.SubUnit)
    • Partielle Units
    • Ablaufkontrolle: continue break exit
    • Exception-Handling und Exception-Throw möglich
    • Multi-Threading-Scripts
  • Methoden
    • Methodentypen: procedure function constructor destructor
    • Methodenparametertypen: const var
    • Methodenoperatoren: virtual abstract override overload forward
    • Import von DLL-Methoden direkt im Script (z.B.: procedure Sleep(milliSec: DWORD); external 'kernel32.dllname 'Sleep'; stdcall; )
    • OOP-Features: inherited
    • Spezielle Operatoren: external export
    • Unterstützte Aufrufkonventionen: register pascal stdcall cdecl
    • Methoden-Pointer
    • Events
  • Records
    • Abschnitte: private protected public
    • Record-Constanten (const-Deklaration in der record-Deklaration)
    • (statische) Record-Methoden
    • (statische) Record-Variablen
    • (statische) Record-Properties
    • Property-Typen: read+write, read-only, write-only
    • Property-Zugriff: direkt, über Methoden, über Methoden mit Parametern
  • Klassen
    • Objekt-Orientierte Programmierung
    • Klassenvererbung
    • Methoden überschreiben
    • Klassen-Sektionen: private protected public
    • Class-Constanten (const-Deklaration in der Class-Deklaration)
    • (statische) Klassenmethoden
    • (statische) Klassenvariablen
    • (statische) Klassenproperties
    • Property-Typen: read+write, read-only, write-only
    • Property-Zugriff: direkt, über Methoden, über Methoden mit Parametern
    • Partielle Klassen (so ähnlich wie bei .NET)
  • Class Helpers
    • Es können zu jedem Datentyp beliebig viele "Helfer-Klassen" erstellt werden
    • gleicher Aufbau wie bei normalen Klassen, nur die Deklaration ist etwas anders:
      • TStringHelper = helper for string
    • Class Helpers erweitern eine Klasse/einen Datentyp ohne die Vererbung zu nutzen
  • Compiler
    • schneller Compiler
    • eingebauter Unit-Cache für schnelleres kompilieren (so wie Delphi-DCUs)
    • partielle Units – mehrere einzelne Units mit gleichem Namen werden zu einer Unit zusammengefasst
    • Linker zum zusammenstellen und zum optimieren des Byte-Codes
    • IntelliSense / Code-Completion und Parameter-Hints-Unterstützung
    • eingebaut als abstrakte Klasse – für SynEdit bereits vorhanden
    • Speichern des kompilierten ByteCodes in einen Stream
  • RunTime
    • schneller ByteCode-Interpreter
    • direkter Aufruf von Delphi-Funktionen
    • Script-Methoden aus dem Programm heraus aufrufbar
    • Script-Methoden als TMethod-Event nativ aufrufbar
    • einfacher Garbage Collector für Script-Klassen (nur falls das Objekt nicht manuell zerstört wurde)
    • eigener Memory-Manager mit Caching für schnelleres Ausführen und für weniger Speicherfragmentierung
    • Exception-Handling
    • Stack-Tracing
  • Quelltext
    • durchgehende Namenskonvention (Units starten mit uSE2 und Klassen mit TSE2)
    • bisher keine Memory-Leaks gefunden

Noch ein paar kurze Hinweise
- Diesmal habe ich leider nicht so viele Beispiele mit in den Download hinein gepackt - es werden aber noch ein paar nachgeliefert

SVN
Ich hab für die Script-Engine ein Source-Forge-Projekt erstellt. Dort sind alle Änderungen auch per SVN abrufbar. Wichtige Releases werd ich natürlich weiterhin hier hochladen

Mitgelieferte IDE
Ich habe die kompilierte Version meiner aktuellen IDE mit in das Download-Paket gepackt. Zusätzlich hab ich den Source in den Unterordner IDEsrc gepackt - zusammen mit den drei kompilierten Packages. Mit der IDE kann man ein paar Testprojekte öffnen, die sich im Unterordner "Projects" befinden.

Ich hoffe, euch gefällt die neue Script-Engine und vielleicht kann der eine oder andere sie ja benutzen.

Download
Auf SourceForge.net (ca. 2,6 MB)

Grüße
Miniaturansicht angehängter Grafiken
screenshot1.png  
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0

Geändert von littleDave (10. Apr 2011 um 14:59 Uhr)
 
Benutzerbild von littleDave
littleDave

 
Delphi 7 Professional
 
#91
  Alt 15. Aug 2010, 18:24
Oh, ich habe irgendwie den letzten Post übersehen

Ist es ein großer Aufwand den Typ Char einzubaun? Denn so muss man in jedem Script einen string auf len(1) prüfen.
Ist schon leider etwas Aufwand. Denn es gibt einige Stellen, die für neue Typen angepasst werden müssen. Ich muss mal schauen, wie ich das am besten hin bekomme

Der kompilierte Script-binärstream wächst mit größeren Scripts schnell an. Da lässt sich aber aufgrund der vielen Nullen schnell mal 1MB auf 40KB komprimieren. Kann man an der Größe irgendwas drehen, ohne die Runtimeperformance einzuschränken?
Ja, das Script-File kann sehr groß werden, 1MB habe ich jedoch noch nicht geschafft. Man könnte vielleicht noch das ein oder andere Byte herausholen, jedoch wirkt sich das sehr negativ beim Laden des Scriptes aus. Das Auslesen des Binary-Files ist übriges streaming-fähig, es wird kein .Seek, .Size oder .Position benutzt. Daher kann man auch sehr schnell und ohne Probleme ein zLibStream beim Speichern und Laden übergeben.

Könntest du evtl den Uses-Cleaner von CNPack vor Releases drüberlaufen lassen?
Die Uses-Liste ist manuell gemacht und sollte eigentlich passen. Deswegen noch das CNPack-Installieren will ich eigentlich nicht.

E: Achja bei der IDE wäre ein Parameter, um ein Script direkt zu laden, praktisch.
Es kommt bald noch viel besser. Ich bastel mir gerade eine eigene RunTime-Library zusammen. Damit kann man dann aus dem Script eine .exe machen, wobei natürlich nur der kompilierte ByteCode an die Echse angehängt wird. Ich habe als Test bereits eine komplette Forms-Anwendung, Multi-Threaded mit einer IdHTTP-Komponente drinnen. Die Exe ist ganze 31 kb groß (ok, die RunTime hat noch 3 MB, aber die wird ja nur einmal pro Rechner gebraucht .

@All: Neue Version Version 0.5.3.1

Eine kleine Bugfix - Version
  • Neuerungen
    • Der Typ "System.TObject" hat jetzt eine neue virtuelle Methode: ".ToString"
    • "System.Console.WriteLine" hat jetzt einen neuen Parametertyp: TObject (ruft die ".ToString" - Methode auf)
  • Änderungen
    • Class-Var-Deklaration gilt jetzt nur noch für die erste Variable
    • System.Diagnostics.TStopwatch erweitert
    • Man kann jetzt nur noch den Constructor von externen Klassen aufrufen, wenn dieser deklariert wurde
  • Bug-Fixes
    • Unit-Cache-Bug mit Records behoben
    • Set-Of-Typen hatten manchmal keine interne Größe, wodurch man sie nicht als Variable in Records oder Klassen hinzufügen konnte
    • Exception-Handling innerhalb von Case-Statements funktionierte wegen einem Compiler-Bug nicht
    • Der Aufruf von Script-Methoden über das Native-Interface (TMethod-Cast) funktionierte nicht mit var-Parametern

Download-Link ist im ersten Post.

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

 
Delphi 7 Professional
 
#92
  Alt 23. Aug 2010, 21:04
Neue Version Version 0.5.3.2

Eine kleine Bugfix - Version
  • Bug-Fixes
    • Ein kleiner Compiler-Fehler, wenn innerhalb eine Schleife in einem case-Statement break oder continue aufgerufen wurde

Download-Link ist im ersten Post.

Grüße
  Mit Zitat antworten Zitat
WladiD

 
Delphi 10.4 Sydney
 
#93
  Alt 17. Sep 2010, 10:12
Hi littleDave,

nachdem ich soeben den Daumen bei sourceforge gehoben habe, wollte ich meinen Lob auch an dieser Stelle ausschreiben:

Die ScriptEngine II ist ein beachtliches One-Man-Project. Konsistent, sauber und schnell. Respekt!

Da du es selbst verwendest (z.B. in Gael), bin ich guter Dinge, dass du sie nicht so schnell fallen lässt und wir uns über stete Weiterentwicklung freuen dürfen.

Diesen Thread verfolge ich schon seit längerem, hatte aber bisher keine Verwendung dafür. Doch das hat sich vor ein paar Tagen geändert.

Für mein AnyiQuack-Projekt (ehemals AccessQuery) habe ich eine Easing-Suite geschrieben, in der ich alle Easing-Funktionen validiere. Da es doch etwas mühselig war, nach jeder Änderung an der jeweiligen Funktion das Projekt zu kompilieren, habe ich nun deine Script-Engine drin. Jetzt kann ich ruck-zuck Änderungen an den Ease-Functions vornehmen und den Code quasi 1:1 in das Projekt übernehmen, wenn es passt.

Falls es dich interessiert, hänge ich einen Screenshot easingsuite.jpg und die EasingSuite.7z an. Die kompletten Source-Codes sind bei Sourceforge drin (Link siehe oben).

Als eine mögliche Erweiterung für die Zukunft würde ich mir die Unterstützung von anonymen Methoden wünschen. Dass die Umsetzung dieses Features etwas heikel ist, ist mir durchaus bewusst.

Weiter so und mfg
Waldemar Derr
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

 
Delphi 7 Professional
 
#94
  Alt 28. Sep 2010, 21:57
Hallo WladiD

sorry für die späte Antwort - ging bei mir leider nicht früher

Danke natürlich für das Lob das freut mich wirklich. Ich bin auch guter Dinge, dass die SEII nicht so schnell aufgeben werde . Dein Projekt schaut auch nicht schlecht aus. Ich habe mir das auch mal angeschaut und habe manchmal auch Verwendung für einen Funktionszeichner - und dieser reicht mir bisher wirklich vollkommen aus . Das i-Tüpfelchen wäre für deine Sandbox noch die Code-Completion. Denn Quelltext kannst du dir in der IDE in der Unit uFormCodeEditor in der Klasse "TCodeEditor" abschauen. Aber wie gesagt - ich finde es jetzt schon sehr gut.

Als eine mögliche Erweiterung für die Zukunft würde ich mir die Unterstützung von anonymen Methoden wünschen. Dass die Umsetzung dieses Features etwas heikel ist, ist mir durchaus bewusst.
Es gibt noch einige offene Punkte, aber ich werde die anonymen Methoden [leider relativ weit hinten] in meine ToDo-Liste aufnehmen.

@All: Neue Version Version 0.5.3.3

Auf Grund von ein paar von mir bisher nicht beachteten Problemen bei partiellen Klassen, musste ich diese leider etwas beschränken. Das liegt nicht daran, dass ich das nicht will, sondern weil es so wie bisher nicht funktioniert hat. Sobald das Problem behoben ist, werde ich die partiellen Klassen wieder so wie im Moment benutzbar machen.
  • Neuerungen
    • Properties können nun auf Variablen von Parent-Klassen verweisen
    • Neue Klasse in System: "System.TMultiCastEvent": mit dieser Klasse kann man mehrere Subscriber an ein Event binden
  • Änderungen
    • Linker-Performance verbessert
    • Unit-Cache-Performance verbessert
    • RunTime-Comparison-Code verringert
    • Ein paar kosmetische Änderungen in der System-Unit (erster Buchstabe von Typen sollte nun überall groß sein, usw.)
  • Bug-Fixes
    • Seltener Bug beim Schreiben von Werten in globale Variablen behoben
    • Ein weiteren Bug im try-except/finally-Block behoben
    • Bugfix in Vergleich-Routine in der RunTime
    • String-Vergleiche mit verschiedenen String-Typen haben in der RunTime nicht funktioniert
    • Compiler-Bug bei der Deklaration von Methoden-Parameter behoben
    • Klassen können nun nicht mehr von nicht-vollständigen Klassen abgeleitet werden (forwarded classes)

Download-Link ist im ersten Post.

Grüße
  Mit Zitat antworten Zitat
WladiD

 
Delphi 10.4 Sydney
 
#95
  Alt 30. Sep 2010, 15:59
Hi littleDave,

kein Problem wegen der verspäteten Antwort, kenne den Zeitfaktor leider auch viel zu gut.

Die Codevervollständigung habe ich mir vorher auch schon angeschaut, bin aber auf die Schnelle (innerhalb von 10 Min.) nicht durchgestiegen und daher schnellstens verworfen. Auch wird diese Art von Code-Editor eh nur ein paar Math.*-Funktionen und Operatoren benötigen, daher lasse ich das vorerst. Aber wer weiß, vielleicht habe ich irgendwann nichts besseres zu tun.

Dass du für die Easing-Suite eine Verwendung hast, überrascht und freut mich zugleich. Seit dem letzten Post habe ich sie erweitert, man kann jetzt jede Funktion über Bewegung (EaseReal-Tab) visualisieren, man hat noch mehr Modifikatoren (emInSnakeInverted und emOutSnakeInverted), und eine (für mich) nützliche Lookup-Table mit beliebigen Werten/Schritten. Hänge die aktuelle Version mal an, vielleicht wird es an Mehrwert für dich gewinnen.

mfg
Angehängte Dateien
Dateityp: 7z EasingSuite.7z (858,4 KB, 24x aufgerufen)
Waldemar Derr
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

 
Delphi 7 Professional
 
#96
  Alt 8. Okt 2010, 19:12
Neue Version Version 0.5.4.0

Diesmal habe ich die Patch-Version mal wieder etwas erhöht . Wie vor etwas längerer Zeit angekündigt, habe ich den Delphi 2009+ - Support mal wieder verbessert. Das Äußert sich nun daran, dass es in der Script-Engine drei neue String-Typen gibt: AnsiString, PAnsiChar und PWideChar. Dadurch ist es nun endlich auch in den Unicode-Versionen von Delphi möglich - AnsiString-Methoden ohne Probleme in die ScriptEngine zu integrieren. In der SEII sind die String-Typen jetzt wie folgt gemapped:
  • SEII string -> string der kompilierten RunTime (RunTime wurde mit D7 kompiliert, dann AnsiString, mit D2010 UnicodeString)
  • SEII PChar -> PChar der kompilierten RunTime (RunTime wurde mit D7 kompiliert, dann PAnsiChar, mit D2010 PWideChar)
  • SEII AnsiString -> AnsiString der kompilierten RunTime
  • SEII WideString -> WideString der kompilierten RunTime
  • SEII PAnsiChar -> PAnsiChar der kompilierten RunTime
  • SEII PWideChar -> PWideChar der kompilierten RunTime
Kompilierte RunTime heißt in diesem Kontext: das Delphi-Programm, welches das kompilierte Programm der ScriptEngine ausführt.

ChangeLog:
  • Neuerungen
    • Neuer Typ: "System.AnsiString"
    • Neuer Typ: "System.PAnsiChar"
    • Neuer Typ: "System.PWideChar"
    • Neue Klasse: "System.AnsiStrings"
    • Klasse "System.StringEncoding" - Erweitert, so dass auch AnsiString verfügbar ist
    • Neue Helper-Klasse: "System.TAnsiStringHelper"
    • Neue Funktion in "System.Strings": "System.Strings.DefaultEncoding": liefert das interne Encoding der RunTime für den Typ "System.String" und "System.PChar".
    • Delphi XE als Compiler-Define eingeführt -> da sich intern zwischen D2010 und D-XE nicht so viel geändert hat, sollte alles funktionieren (ist jedoch nicht getestet)
    • Methoden-Pointer können nun auf andere EventTypen gecastet werden -> dies führt zu einer weniger strengen Parameterprüfung.
  • Änderungen
    • Properties mit Parametern können nun auch direkt hinter aufgerufen werden. Bisher musste man auf Grund eines Compiler-Bugs den Rückgabewert in eine Variable zwischenspeichern - das geht jetzt auch direkt

      Vorher:
      Delphi-Quellcode:
      var t : TIrgendwas;
        tmp : TIrgendwas;
      begin
        tmp := t.Items[0];
        tmp := t.Items[1];
        tmp.Items[2] := nil;
      end;
      Nun auch so möglich:
      Delphi-Quellcode:
      var t: TIrgendwas;
      begin
        t.Items[0].Items[1].Items[2] := nil;
      end;
  • Bug-Fixes
    • Ein paar Bugs in "System.Console" behoben: das interne String-Encoding hat bei D2009+ bei manchen Methoden nicht funktioniert
    • Ein paar Bugs im internen String-Handling der RunTime behoben

Download-Link ist im ersten Post.

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms

 
Delphi XE Professional
 
#97
  Alt 8. Okt 2010, 19:57
Vielen Dank für das Update!


Unter Delphi XE gibt es noch folgende Hinweise/Warnungen:
Zitat:
[DCC Warning] uSE2IncDateTime.pas(1771): W1000 Symbol 'GetLocaleFormatSettings' is deprecated: 'Use TFormatSettings.Create(Locale)'
[DCC Warning] uSE2IncDateTime.pas(1771): W1002 Symbol 'GetLocaleFormatSettings' is specific to a platform
[DCC Warning] uSE2IncDateTime.pas(1779): W1000 Symbol 'GetLocaleFormatSettings' is deprecated: 'Use TFormatSettings.Create(Locale)'
[DCC Warning] uSE2IncDateTime.pas(1779): W1002 Symbol 'GetLocaleFormatSettings' is specific to a platform
[DCC Warning] uSE2IncDateTime.pas(1787): W1000 Symbol 'GetLocaleFormatSettings' is deprecated: 'Use TFormatSettings.Create(Locale)'
[DCC Warning] uSE2IncDateTime.pas(1787): W1002 Symbol 'GetLocaleFormatSettings' is specific to a platform
[DCC Warning] uSE2IncDateTime.pas(1795): W1000 Symbol 'GetLocaleFormatSettings' is deprecated: 'Use TFormatSettings.Create(Locale)'
[DCC Warning] uSE2IncDateTime.pas(1795): W1002 Symbol 'GetLocaleFormatSettings' is specific to a platform
[DCC Warning] uSE2IncSCriptInfo.pas(48): W1000 Symbol 'DecimalSeparator' is deprecated: 'Use FormatSettings.DecimalSeparator'
[DCC Warning] uSE2IncSCriptInfo.pas(53): W1000 Symbol 'DecimalSeparator' is deprecated: 'Use FormatSettings.DecimalSeparator'
[DCC Hint] uSE2ExecutionContext.pas(218): H2164 Variable 'r4' is declared but never used in 'TSE2ExecutionContext.Process'

Unter Delphi 2009:
Zitat:
[DCC Hint] uSE2Types.pas(1827): H2443 Inline function 'AnsiSameStr' has not been expanded because unit 'Windows' is not specified in USES list
[DCC Hint] uSE2PEData.pas(826): H2443 Inline function 'AnsiSameStr' has not been expanded because unit 'Windows' is not specified in USES list
[DCC Hint] uSE2RunAccess.pas(197): H2443 Inline function 'AnsiSameText' has not been expanded because unit 'Windows' is not specified in USES list
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

 
Delphi 7 Professional
 
#98
  Alt 8. Okt 2010, 20:48
Hallo toms,

danke für die Warnungs-Liste für Delphi XE / D2009

Zitat:
[DCC Warning] uSE2IncDateTime.pas(1771): W1000 Symbol 'GetLocaleFormatSettings' is deprecated: 'Use TFormatSettings.Create(Locale)'
[DCC Warning] uSE2IncDateTime.pas(1771): W1002 Symbol 'GetLocaleFormatSettings' is specific to a platform
[DCC Warning] uSE2IncDateTime.pas(1779): W1000 Symbol 'GetLocaleFormatSettings' is deprecated: 'Use TFormatSettings.Create(Locale)'
[DCC Warning] uSE2IncDateTime.pas(1779): W1002 Symbol 'GetLocaleFormatSettings' is specific to a platform
[DCC Warning] uSE2IncDateTime.pas(1787): W1000 Symbol 'GetLocaleFormatSettings' is deprecated: 'Use TFormatSettings.Create(Locale)'
[DCC Warning] uSE2IncDateTime.pas(1787): W1002 Symbol 'GetLocaleFormatSettings' is specific to a platform
[DCC Warning] uSE2IncDateTime.pas(1795): W1000 Symbol 'GetLocaleFormatSettings' is deprecated: 'Use TFormatSettings.Create(Locale)'
[DCC Warning] uSE2IncDateTime.pas(1795): W1002 Symbol 'GetLocaleFormatSettings' is specific to a platform
Oh, da habe ich eine Testfunktion ausversehen noch im Quelltext drinnen. Die muss eigentlich raus . Beim nächsten Release werden die überladenen Funktionen für "DateTime.TimeToStr", "DateTime.DateToStr" und "DateTime.FormatDateTime" mit dem Language-Id-Parameter wieder ausfliegen. Daher BITTE NICHT benutzen.

Zitat:
[DCC Warning] uSE2IncSCriptInfo.pas(48): W1000 Symbol 'DecimalSeparator' is deprecated: 'Use FormatSettings.DecimalSeparator'
[DCC Warning] uSE2IncSCriptInfo.pas(53): W1000 Symbol 'DecimalSeparator' is deprecated: 'Use FormatSettings.DecimalSeparator'
Ok, für Delphi XE werde ich schauen, dass ich das so umsetze. Hoffentlich rate ich dann richtig, da ich kein XE habe.

Zitat:
[DCC Hint] uSE2ExecutionContext.pas(218): H2164 Variable 'r4' is declared but never used in 'TSE2ExecutionContext.Process'
Komisch - warum zeigt mir Delphi 2010 und Delphi 7 diesen Hinweis nicht an - werde ich löschen.


Unter Delphi 2009:
Zitat:
[DCC Hint] uSE2Types.pas(1827): H2443 Inline function 'AnsiSameStr' has not been expanded because unit 'Windows' is not specified in USES list
[DCC Hint] uSE2PEData.pas(826): H2443 Inline function 'AnsiSameStr' has not been expanded because unit 'Windows' is not specified in USES list
[DCC Hint] uSE2RunAccess.pas(197): H2443 Inline function 'AnsiSameText' has not been expanded because unit 'Windows' is not specified in USES list
Die Unit Windows will ich eigentlich so weit wie möglich vermeiden (wegen FreePascal). Naja, da werde ich wohl ein {$IFDEF WINDOWS} in die Uses-Liste hinzufügen müssen. Was mich aber auch wieder wundert: warum sagt mir Delphi 2010 diese Hinweise nicht

(wahrscheinlich habe ich bei mir in den Projektoptionen irgend ein Häkchen nicht gesetzt)

Danke nochmal für die Liste, toms.
  Mit Zitat antworten Zitat
Benutzerbild von mleyen
mleyen

 
FreePascal / Lazarus
 
#99
  Alt 8. Okt 2010, 21:16
Was mich aber auch wieder wundert: warum sagt mir Delphi 2010 diese Hinweise nicht

(wahrscheinlich habe ich bei mir in den Projektoptionen irgend ein Häkchen nicht gesetzt)
(btw: Hast du die H2443-Warnung abgestellt? ^^
Bei mir in 2010 hatte er sie auf jeden Fall angezeigt.
Man konnte im Debugmode wenn eine Exeption autritt sagen "Diesen Exception-Typ nicht mehr anzeigen". Ist mir auch Mal unter ziemlich bösen Umständen an die Gurgel gegangen.
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

 
Delphi 7 Professional
 
#100
  Alt 10. Okt 2010, 18:24
Neue Version Version 0.5.4.1

Mir ist in der letzten Version ein etwas größerer Fehler unterlaufen, daher schiebe ich schnell noch dieses Update hinterher:
  • Neuerungen
    • Der "Self" - Parameter ist in Klassenmethoden nun nicht mehr notwendig. Nun kann man auf alle Felder, Methoden und Properties einer Klasse ohne vorheriges "Self." zugreifen. Die Code-Completion-Klasse ist für dieses Feature ebenfalls bereits erweitert.
    • Bei Properties von externen Klassen kann der Compiler jetzt optional automatisch einen entsprechenden Getter und Setter erstellen. Das erspart einiges an Tipp-Arbeit beim importieren der externen Klassen. Hier mal ein Beispiel.
      Vorher:
      Delphi-Quellcode:
      type
        TTest = class(TExternalObject)
        private
          function GetCaption: string; external;
          procedure SetCaption(value: string); external;
        public
          property Caption : string read GetCaption write SetCaption;
        end;
      Nacher:
      Delphi-Quellcode:
      type
        TTest = class(TExternalObject)
        public
          property Caption : string read and write;
        end;
      Hier mal die Deklaration für die einzelnen Property-Typen:
      • Read-Only: property [Name]: [Typ] read;
      • Write-Only: property [Name]: [Typ] write;
      • Read-Only: property [Name]: [Typ] read and write;

      Das ganze geht natürlich auch für parametrisierte Properties:
      Delphi-Quellcode:
      type
        TTest = class(TExternalObject)
        public
          property Items[index: integer]: string read and write;
        end;
  • Änderungen
    • Test-Code aus der System-Unit entfernt: alle DateTime-Aufrufe mit einer LanguageId sind entfernt
  • Bug-Fixes
    • In Klassenmethoden können nun auch Variablen deklariert werden, deren Name in der Klasse für ein Feld, eine Methode oder eine Property benutzt wurden.
    • Der Zugriff auf nicht-statische Klassen/Record Variablen von einem statischen Element aus wurde nicht abgefangen
    • Kritischer Fehler behoben: bei der Deklaration von einer String-Variable innerhalb eines Records kam es zu einer Zugriffsverletzung innerhalb des Compilers

Download-Link ist im ersten Post.

Grüße
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 10 von 12   « Erste     8910 1112      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:29 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