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 3 von 12     123 45     Letzte »    
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#1

Re: ScriptEngine II (v. 0.3.2.4)

  Alt 27. Sep 2009, 20:02
Ich habe gerade ein Problem gefunden, bei dem auch der Cache-Manager betroffen ist - vielleicht liegt es daran:

In der Datei "uSE2Consts.pas" findet man folgende Zeile:
Delphi-Quellcode:
class procedure TSE2StreamHelper.WriteString(Stream: TStream;
  const s: string);
var len: cardinal;
begin
  len := length(s);
  Stream.Write(len, SizeOf(len) * SizeOf(char)); // <-- hier ist ein fehler
  Stream.Write(s[1], len);
end;
Diese muss man durch folgende Zeilen ersetzen
Delphi-Quellcode:
class procedure TSE2StreamHelper.WriteString(Stream: TStream;
  const s: string);
var len: cardinal;
begin
  len := length(s);
  Stream.Write(len, SizeOf(len));
  Stream.Write(s[1], len * SizeOf(char)); // <-- muss nur eine Zeile weiter drunter
end;
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
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#2

Re: ScriptEngine II (v. 0.3.3.0)

  Alt 27. Sep 2009, 21:26
Ich hab gerade eine neue Version hochgeladen Version 0.3.3.0

Zum einen hab ich den Bug, den ich gerade beschrieben habe beseitigt. Zudem hab ich noch ein Problem behoben, der mit aktivierten Range-Check aufgetreten ist (Danke an _X_ für den Hinweis).

Es gibt auch eine neue Unit: "uSE2IncHelpers.pas". Bindet man diese Unit ein, sind ein paar Helper-Klassen für die Typen TDateTime, String, Pointer, Single, Double und TColor eingebaut. Die Helper-Funktionen sind auch in der eingebauten IntelliSense-Funktion verfügbar.

Hier mal zwei, drei Beispiele, die mit den Helper-Klassen möglich sind:
Delphi-Quellcode:
var time: TDateTime;
    str : string;
    ptr : pointer;
    dbl : double;
    res : boolean;
begin
  res := dbl.IsNan;
  res := ptr.Assigned;
  res := (str.IndexOf('h') > 10) and (str.EndsWith('hey'));
  res := (time.Month > 2) and (time.DayOfYear > 128);
end.
Um die Helper-Klassen zu benutzen muss man nur die Unit "uSE2IncHelpers" in die Uses-Liste der Anwendung aufnehmen.

Leider hab ich es noch nicht geschafft, die Helper-Klassen sowie die partiellen Klassen in das PDF mit aufzunehmen - ich werd es aber noch nachholen.

Grüße
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
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

Re: ScriptEngine II (v. 0.3.2.4)

  Alt 28. Sep 2009, 06:52
Zitat von littleDave:
Zitat von toms:
Unter Delphi 6 lässt es sich nicht kompilieren. Einige Funktionen sind in der SysUtils.pas noch nicht vorhanden.
Wenn das nicht zu viele seien sollten, wäre es super, wenn du mir eben ne Liste schreiben würdest - dann schmeiß ich diese per Compiler-Switch heraus.

Zitat:
[Error] uSE2IncStrings.pas(306): Undeclared identifier: 'LeftBStr'
[Error] uSE2IncStrings.pas(328): Undeclared identifier: 'MidBStr'
[Error] uSE2IncStrings.pas(345): Undeclared identifier: 'PosEx'
[Error] uSE2IncStrings.pas(350): Undeclared identifier: 'PosEx'
[Error] uSE2IncStrings.pas(366): Undeclared identifier: 'RightBStr'
Diese Funktionen lassen sich leicht nachbauen (anstatt diese per Compiler-Switch herauszuschmeißen)
Thomas
  Mit Zitat antworten Zitat
_x_

Registriert seit: 23. Sep 2008
7 Beiträge
 
#4

Re: ScriptEngine II (v. 0.3.3.0)

  Alt 28. Sep 2009, 16:46
Unter Linux bekommt man in der Unit uSE2PerfMonitor kleine Probs mit Uses Windows; Bitte ein {$IFNDEF FPC} reinmachen.

mfg _X_
  Mit Zitat antworten Zitat
EugenB

Registriert seit: 7. Dez 2006
98 Beiträge
 
Lazarus
 
#5

Re: ScriptEngine II (v. 0.3.3.0)

  Alt 28. Sep 2009, 17:52
Ich freu mich das es endlich das die Version der ScriptEngine gibt

Aber leider schade das man keine Antwort per PN bekommt

Anyway, weiter so , endlich mal ne OOP Scriptsprache =)
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#6

Re: ScriptEngine II (v. 0.3.2.4)

  Alt 28. Sep 2009, 20:21
Zitat von toms:
Zitat von littleDave:
Zitat von toms:
Unter Delphi 6 lässt es sich nicht kompilieren. Einige Funktionen sind in der SysUtils.pas noch nicht vorhanden.
Wenn das nicht zu viele seien sollten, wäre es super, wenn du mir eben ne Liste schreiben würdest - dann schmeiß ich diese per Compiler-Switch heraus.
Zitat:
[Error] uSE2IncStrings.pas(306): Undeclared identifier: 'LeftBStr'
[Error] uSE2IncStrings.pas(328): Undeclared identifier: 'MidBStr'
[Error] uSE2IncStrings.pas(345): Undeclared identifier: 'PosEx'
[Error] uSE2IncStrings.pas(350): Undeclared identifier: 'PosEx'
[Error] uSE2IncStrings.pas(366): Undeclared identifier: 'RightBStr'
Diese Funktionen lassen sich leicht nachbauen (anstatt diese per Compiler-Switch herauszuschmeißen)
Vielen Dank für die Liste - die nächste Version wird die Funktionen nachgebaut drinnen haben. Danke für die Mühe

Zitat von _x_:
Unter Linux bekommt man in der Unit uSE2PerfMonitor kleine Probs mit Uses Windows; Bitte ein {$IFNDEF FPC} reinmachen.

mfg _X_
Ist in der aktuellen Version bereits so eingebaut - es wird auch ein Konfigurations-File geben mit dem man das Kompilieren der Script-Engine einstellen kann.

Zitat von EugenB:
Ich freu mich das es endlich das die Version der ScriptEngine gibt
[...]
Anyway, weiter so , endlich mal ne OOP Scriptsprache =)
Danke für das Lob Freut mich, dass sie ankommt.

Zitat von EugenB:
Aber leider schade das man keine Antwort per PN bekommt
Oh, ist meine Nachricht nicht gesendet worden ? Komisch ... hol ich aber gleich nach.
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#7

Re: ScriptEngine II (v. 0.3.2.4)

  Alt 28. Sep 2009, 21:14
Zitat von littleDave:
Vielen Dank für die Liste - die nächste Version wird die Funktionen nachgebaut drinnen haben.
mach die einfach ein nur dann rein, wenn auch nötig ... es muß in aktuellen Versionen ja nicht unbedingt doppelter Ersatz-Code vorhanden sein

Delphi-Quellcode:
{$IF not Declared(PosEx)}
  function PosEx(...): string;
  begin
    ...
  end;
{$IFEND}
bzw.
Delphi-Quellcode:
interface
  {$IF not Declared(PosEx)}
    function PosEx(...): string;
    {$DEFINE INCLUDE_POSEX}
  {$IFEND}

implementation
  {$IFDEF INCLUDE_POSEX}
    function PosEx(...): string;
    begin
      ...
    end;
  {$ENDIF}
[add]
OK, man könnte es auch von der Delphi-Verion abhängig machen, aber so ist es wohl einfacher ... also wenn man nicht ständig gucken muß, wann was eingeführt wurde usw.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#8

Re: ScriptEngine II (v. 0.3.2.4)

  Alt 28. Sep 2009, 21:40
Zitat von himitsu:
mach die einfach ein nur dann rein, wenn auch nötig ... es muß in aktuellen Versionen ja nicht unbedingt doppelter Ersatz-Code vorhanden sein
Ich habs so gelöst:

Delphi-Quellcode:
{$IFNDEF DELPHI7UP}
function PosEx(....)
begin
  (...)
end;
{$ENDIF}

// Aufruf:
{$IFDEF DELPHI7UP}
  result := StrUtils.PosEx(....);
{$ELSE}
  result := PosEx(...);
{$ENDIF}
Das Define "DELPHI7UP" wird per Include-File gesetzt, dass in jede Unit der Script-Engine eingebunden wird.

Zitat von himitsu:
Delphi-Quellcode:
{$IF not Declared(PosEx)}
  function PosEx(...): string;
  begin
    ...
  end;
{$IFEND}
geht das wirklich - also das "IF not Declared(PosEx)"? Ich dachte, per Compiler-Switch kann man generell nicht auf Delphi-Elemente zugreifen bzw. überprüfen, ob etwas bereits vorhanden ist

Zitat von himitsu:
OK, man könnte es auch von der Delphi-Verion abhängig machen, aber so ist es wohl einfacher ... also wenn man nicht ständig gucken muß, wann was eingeführt wurde usw.
Ich habs jetzt so gelöst, da ich das "declared" nicht kannte.
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
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#9

Re: ScriptEngine II (v. 0.3.3.0)

  Alt 28. Sep 2009, 22:00
Es läuft soweit unter Delphi 2010, es gibt jedoch einige Warnungen.
Angehängte Dateien
Dateityp: txt d2010_warnungen_121.txt (6,3 KB, 5x aufgerufen)
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#10

Re: ScriptEngine II (v. 0.3.3.0)

  Alt 28. Sep 2009, 22:03
Zitat von littleDave:
geht das wirklich - also das "IF not Declared(PosEx)"? Ich dachte, per Compiler-Switch kann man generell nicht auf Delphi-Elemente zugreifen bzw. überprüfen, ob etwas bereits vorhanden ist
Also Funktionen aufrufen oder auf Variableninhalte zugreifen geht natürlich nicht,
aber die "Funktionen" Declared (für Funktionen, Klassen, Konstanten und Variablen) und Defined für Compilerschalter geht.

Ich weiß jetzt nur nicht in welcher Delphiversion das {$IF ...} eingeführt wurde.

Delphi-Quellcode:
{$DEFINE Schalter1}

// dieses
{$IFDEF Schalter1}
  {$IFDEF Schalter2}
    ...
  {$ENDIF}
{$ENDIF}

// ist das Gleiche wie das
{$IF Defined(Schalter1) and Defined(Schalter2)}
  ...
{$IFEND}

// und dann gibt es noch sowas

{$IF not Declared(xyz)} {$MESSAGE Hint 'xyz gibt es nicht'} {$IFEND}

const xyz = 5;

{$IF Declared(xyz)} {$MESSAGE Hint 'jetzt schon'} {$IFEND}

{$IF xyz = 5} {$MESSAGE Hint 'xyz ist 5'} {$IFEND}
[add]
die D2010-Warungen sollten so wohl auch schon in/ab D2009 kommen
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 12     123 45     Letzte »    


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 05:34 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-2025 by Thomas Breitkreuz