WDSibyl  Probleme


 

Juni  2011


 WDSibyl Probleme


 
 erledigt
OnKeyPress (TControl) funktioniert nur noch ab ASCII 20. Enter gibt daher nicht #13 oder Del nicht #8 zurück.

31.05.2010
TEdit : aktives Element, zum Beispiel TButton, kann nicht mehr aus einem Element wie TEdit, TCombobox usw heraus via Enter aktiviert/aufgerufen werden. (Es funktioniert jedoch z.B. aus TCheckBox)

31.05.2010
04.03.2011
bereinigt
(in nächster Version)
tcRegistry : Unit INIFILES ; ReadStrings macht nichts. Es fehl der entsprechende Code.
(analog auch ReadSectionValues, WriteInteger, WriteBool, WriteStrings, ReadData, ReadLongWord...)

03.06.2010
  bereinigt
(in nächster Version)
TabbedNotebook : beim Blättern (+/-) korrespondiert die Lasche (Tab) nicht immer mit der aktuellen Seite.
Problem 1 : Beim erstmaligen Anzeigen wird z.B. als aktiver TabIndex = PageIndex gezeichnet, was falsch ist wenn z.B. der erste Tab aus mehreren Seiten besteht.
Problem 2 : beim Vorwärtsblättern werden die Tabs nach links verschoben obwohl nur innerhalb einem Tab zur nächsten Seite geblättert wird.
Problem 3 : entsprechend verschwindet bald einmal der aktuelle Tab.
Problem 4 : beim Zurückblättern verschieben sich dieTabs nicht korrekt nach rechts, sodass bald mal der aktuelle Tab gar nicht mehr angezeigt wird.

27.04.2010
03.09.2010
bereinigt
(in nächster Version)
Memo.Lines.Add; ist der erste Eintrag eine Leerzeile, wird sie nicht eingefügt
Entsprechend wird auch bei Memo.Lines.LoadFromFile eine Leerzeile am Anfang nicht eingefügt.

14.06.2010
TMenuItem; OnClick wird nicht aufgerufen wenn es Untermenues hat (Submenu=true)

17.06.2010
Eigenschaft Cursor: Mauszeiger wird nicht gemäss eigener Definition (z.B. crHand anstatt crDefault) angezeigt (z.B. TButton, TSpeedButton...)

20.09.2010
Hint: sollte sich beim zeichnen nicht genau unter dem Cursor befinden, da man sonst z.B. einen Button darunter nicht mehr drücken kann. Zudem ist die Breite des Rahmens oft nicht sauber an die Textlänge angepasst (meist ist der Rahmen zu kurz).

20.09.2010
27.10.2010
bereinigt
(in nächster Version)
StrToInt :  Der Rückgabewert darf offenbar auch vom Typ LongWord sein. Ein String darf daher einem Wert bis MAXLONGWORD entsprechen.
Ist der Wert grösser wird jedoch kein Error ausgegeben und der Rückgabewert ist falsch.
( Beispiel: StrToInt('4294967296') = 0 , StrToInt('42949672956') = 4294967292 )

04.06.2010
IntToStr :  darf wirklich max nur ein LongInt sein. Mit LongWord gibt's keinen Fehler, doch ist die Rückgabe falsch. Wäre schön wenn IntToStr auch mit LongWord funktionieren würde.
...oder eben z.B. eine neue Funktion :
  Function LongWordToStr(Value: LongWord): String;
  Begin
     Str(Value, Result);
  End;

Nov 2010

tStrings : anstatt property TabSeperator steht roperty TabSeperato
20.07.2010
bereinigt
(in nächster Version)
PathExists  (Unit sysutils) Berücksichtigt nicht, dass ein SubDir auch zusätzlich das Attribut faArchive besitzen kann (JFS).
Auch gibt es für SubDirs Attribut=22 zum Beispiel für c:\Nowhere (SysFile + Hidden + Directory)



05.01.2011
bereinigt
(in nächster Version)
DelTree (Unit sysutils) Ein Fehler in DelTree führt dazu, dass lediglich leere Verzeichnisse gelöscht werden.


05.01.2011
bereinigt
(in nächster Version)
TImage  Eigenschaft TransparentColor hat keine Funktion

05.01.2011
TMultiColumnListBox  Sort(section:Integer) hat offenbar Probleme (Spalte mit Datum) und ist extrem langsam.

10.12.2010
 Compiler-Fehler

  Compiler-Fehler: Der Typ Word gibt beim Grössenvergleich mit anderen Typen ein falsches Resultat.
Vorallem unangenehm wird's, wenn man eine Konstante definiert, die WDSibyl intern dann als Typ WORD behandelt.

Beispiel:

const BufferSize_1 = $8001; {32K+1 bytes = 32769} //offenbar intern Typ Word
var  var_Word : Word;
      var_int  : Integer;

begin
  var_int := 112;
  if var_int >= BufferSize_1                         // 112 >= 32769 ?
  then bytesToRead := Pred(BufferSize_1)     // falsch; dumm gelaufen
  else bytesToRead := var_int;
  AStream.ReadBuffer(pBuf^, bytesToRead);    // crash

  var_int  := 112;
  var_Word := 32769;
  if var_int >= var_Word                             // 112 >= 32769 ?
  then bytesToRead := Pred(var_Word)         // ebenso falsch; dumm gelaufen
  else bytesToRead := var_int;
  //AStream.ReadBuffer(pBuf^, bytesToRead);  // crash

  ..
  ..
end;

Jan 2010
  Compiler-Fehler bei aktivierter Option "Common subexpressions". Varianten mit unterschiedlichem Ausgang ergeben sich, wenn man die linke Array-Grenze mal auf 0 oder auf 1 setzt.
Siehe auch Hinweis unter  http://www.wdsibyl.org/Forum/viewtopic/topic/55

Program OptBug;

var i,Summe : WORD;
Anzahl : Array[0..2] OF WORD;

BEGIN
  Anzahl[1] := 3;
  Anzahl[2] := 7;
  Summe := 0;
  For i := 1 to 2 do
  BEGIN
    WriteLn (i*Anzahl[i]);
    Inc (Summe, i*Anzahl[i]);
  END;
  Writeln (Summe);
  ReadLn
END.

Jan 2010
Compiler-Fehler bei aktivierter Option "peephole Optimierung".
So ist es möglich, dass Str(Value:0:999, Result) zu einem Fehler "Float invalid operation exeption (EInvalidOp) occured at CS:EIP =$0000005B:$0001A145 at $0001A145 !" führt. Eine solche Anweisung befindet sich zum Beispiel in der Funktion FloatToStrF() und betrifft Zahlen-Umwandlungsroutinen (FloatToStr, ...)

04.04.2010
 Debugger-Probleme

Debugger Fehler: 'Unhandled stack invalid exception notification in ...' (z.B. bei rekursivem Aufruf von Prozeduren)

30.03.2011
tSearchRec Probleme im Zusammenhang mit dieser Variablen-Definition. Erzeugt die Meldung "Float invalid operation exeption..."
Beispiel :

procedure  xy;
var SearchRec : tSearchRec;
begin
   ....
end;

06.05.2011
Extended ebenso Probleme wenn z.B. innerhalb einer Funktion eine Extended-Variable definiert wird. Fehler-Meldung z.B. "Float invalid operation exeption (EInvalidOp) occured at CS:EIP =$0000005B:$1C059C0C at $1C059C0C !..."
Beispiel :

function  xy;
var Wert : Extended;
begin
   ....
end;

Abhilfe wenn's geht: Double anstatt Extended.

04.06.2011
 Editor


Text suchen via Ctrl-Q-F: Enter führt nicht mehr zum sofortigen Start der Suche.
(siehe Problem OnKeyPress (TControl))

(in tEdit bereinigt 04.03.2011)
04.02.2010
04.03.2011
bereinigt
(in nächster Version)
Ctrl-Ins  das Speichern in die Zwischenablage (Ctrl-Ins) kann nach kurzer Zeit zur folgenden Fehlermeldung führen :
"Exception occured: Heap structure error (EInvalidHeapStructure) Type 12 Group ID -1 at $00024285 !" oder
"Access violation exception (EGPFaul) occured at CS:EIP =$0000005B:$000261A0 at $000261A0!"

04.05.2010
gehe zu Zeile: Das Eigabefeld für die Zeilennummer besitzt leider nicht den Focus.

07.04.2010
Hilfetexte in der Entwicklungsumgebung: im Objekt Inspektor wird der Hilfetext nicht gefunden, da das Schlüsselwort vermutlich nur aus der Bezeichnung (Eigenschaft, Methode...) besteht. Es gibt aber gleichlautende Eigenschaften in verschiedenen Klassen. In den HLP-Dateien besteht der Schlüssel (neu) aus Eigenschaft und Klasse, also in der Form "xxxxx (xxxxxxxxxx)".

12.03.2010
verbessert
(in nächster Version)
Neues Objekt Das bei der Installation angegebene Verzeichnis für die Objekte wird nicht vorgeschlagen.

13.04.2010
Komponentenbezeichner umbenennen: TLabel.Name (als Beispiel) umbenennen, jedoch lediglich Gross-/Kleinschreibung ändern ; Fehler "Doppelter Komponentenbezeichner"

03.04.2010
Komponente/n ausschneiden/einfügen: der/die Komponenten-Name/n wird/werden nicht beibehalten sondern umbenannt.

03.04.2010
 optisches


Hint : in den Programmen nach der Compillierung ist der Rahmen mit gelbem Hintergrund oftmals zu lang (bei Kleinbuchstaben) aber auch schon mal zu kurz (bei Grossbuchstaben). Dafür ist er beim WDSibyl-Editor zu kurz.
Zudem sollte er klein wenig versetzt gezeichnet werden, sodass ein Tastendruck auch funktioniert (z.B. tCheckBox, TSpeedButton usw).

04.04.2010
27.10.2010
bereinigt
(in nächster Version)
TMultiColumnListBox : im schmalen weissen Streifen rechts von vert. Scrollbar kann der dahinterliegende Text sichtbar sein (sofern breiter als sichtbarer Bereich).
Die Zeilenhöhe kann nicht definiert werden und ist etwas zu klein (oder der Text zu tief). Beispiel: Buchstabe g (WarpSans 9).


Juni 2010
19.11.2010
bereinigt
(in nächster Version)
TMultiColumnListBox : Fonteinstellung wird nicht übernommen (ParentFont=false).
MultiColumnList.Items.Count ist leider auf 32767 begrenzt (Integer)
Die Spaltensortierung ist bei vielen Einträgen langsam.

Juni 2010
TAnalogClock : hat optische Probleme bei diversen Bildschirmauflösungen (Uhr nicht immer schön rund)

07.04.2010
 diverses

Ländereinstellungen : In eCS 2.0 rc7 und GA fehlen die Länder-Einträge in der Registry (HKEY_CURRENT_USER\CONTROL PANEL\INTERNATIONAL). Entsprechend werden die Registry-Definitionen aus PM_National verwendet. Diese werden jedoch bei der Installation nicht immer richtig gesetzt (z.B. Schweiz). Daher können Dezimalzeichen (sDecimal), Tausendertrennzeichen (sThousand)... falsch sein.

31.05.2010
ein eCS 2.0-
Problem
 div. Tools

Help Compiler v1.01
Sobald intern auf Grund der Verarbeitung von Links die Zeilenlänge 255 überschritten wird, gerät der Compiler in einen Loop und zeigt zum Beispiel die Meldung: Error at [289810,0] in OS2API_DE.SHS  "Illegal link"

Beispiel:
.BOLD_UNDERLINE Deklaration
.XMP
function WSAAsyncSelect(s:TSOCKET;ahWnd:{HWND}; wMsg:{LONGWORD}; lEvent:{LONGINT}):{LONGWORD};{APIENTRY}; 'PMWSock' name 'WSAAsyncSelect';
.EXMP


Abhilfe: Zeilenvoschub dazwischen einfügen oder Zahl der Links in dieser Zeile vermindern.

05.02.2010
in Bearbeitung
".TITLE" funktioniert nicht und zeigt keine Wirkung.
Via ".TITLE" wird keine Definition ":title." in der IPF-Datei erzeugt.
Problemlösung: ".IPFC :title."

31.03.2010
Fussnote z.B. via ".FN / .EFN" ist leider nicht implementiert.
Problemlösung:
".IPFC :fn id=xxxx."
belibiger Text
".IPFC :efn."
".IPFC :link refid=xxxx reftype=fn. yyyyy :elink."



 offen / Wünsche...


GetTickCount  Unit System
Nicht nur in Unit System für Win32 einbauen sondern auch für OS2.
Beispiel:

{$IFDEF OS2}
  function GetTickCount:LongInt;
  begin
    Result := tcOS.TickCount;
  end;
{$ENDIF}

{$IFDEF WIN32}
  function GetTickCount; external kernel32 name 'GetTickCount';
{$ENDIF}

Jan 2010
Typ int64 einbauen
Jan 2010
function Hex2Longint(Str : string) : Longint;  einbauen
function RandomRange(const AFrom, ATo: Integer): Integer;  einbauen
function AnsiCompareStr(const S1, S2: AnsiString): LongInt;  einbauen
function AnsiSameStr(const S1, S2: AnsiString): Boolean;   einbauen
function AnsiStrUpper(Str: PChar): PChar;
function CompareByte(Const buf1,buf2;len:LongInt):LongInt;  einbauen
Jan 2010
EA-Routinen einbauen, zum Beispiel
SysQueryEAList(),  SysGetEA(), SysPutEA(), ...usw
oder tEAs = class(), tEA = class(), tEA_Ascii = class(), tEAList = class(), .....usw
Jan 2010
tMenuItem.Bitmap einbauen
 
Jan 2011
 vorsicht....

StrToInt kann wirklich nur Strings korrekt umwandeln, die als Ergebnis < MaxLONGINT liefert. Ansonsten kommt ohne Fehlermeldung ein falscher Wert zurück. (try except end funktioniert da nicht)



 Wünsche für neuen Compiler

Wie im C++ sollten überladene Prozeduren und Funktionen möglich sein. Überladene Prozeduren sind Prozeduren mit demselben Namen aber unterschiedlichen Parameterlisten.
Beispiel:

function LeftStr(const AText: String; const ACount: INTEGER): String; overload;
function LeftStr(const AText: AnsiString; const ACount: INTEGER): AnsiString; overload;

oder:

procedure swap(var a,b : integer); overload;
procedure swap(var a,b : double); overload;
procedure swap(var a,b : String); overload;



Wie in C++ sollte es die Möglichkeit geben einen Wert im Prozedurkopf mit "=" anzuhängen der gesetzt wird, wenn eine Funktion mit weniger als der nominellen Parameterzahl aufgerufen wird.
Beispiel:

procedure init(alles:boolean = true);
begin
  ...
end;

procedure Neu;
begin
  init;
end;





stored
Beispiel: property ChildDefs: TFieldDefs read GetChildDefs write SetChildDefs stored HasChildDefs;



 Unterschiede Delphi / WDSibyl

Delphi
WDSibyl
tCanvas
  Font.Color
  FillRect(Rect)

  CharColor
  FillRect(Rect,Color)
tDrawGrid
  onExit, onKeyDown, onKeyPress
  Font : tFont
  GridLineWith : LongInt
  onSelectCell(Sender:TObject;
    ACol,ARow:Integer;
    var CanSelect:Boolean);

  fehlt
  fehlt
  fehlt
  onSelectCell(Sender:TObject;
    ACol,ARow:Integer);
tMenuItem
  RadioItem : Boolean;
  Visible : Boolean;

  fehlt
  fehlt  (alternativ: MenuItem.Caption := '')
tTimer
  Enabled := true;  (Boolean) 
  Enabled := false;  (Boolean) 

  fehlt  (alternativ: Timer.Start)
  fehlt  (alternativ: Timer.Stop)
Exit
  funktion test : Integer;
  begin
    ...
    if a = b then Exit(1);  //ab Delphi 2009
  end;
  funktion test : Integer;
  begin
    ...
    if a = b
    then begin
               Result := 1;
               Exit;
             end;
  end;
Feld = array of  tTyp
SetLength(Feld, ...)
Feld = array of array of  tTyp
SetLength(Feld, ... , ... )
  fehlt  (alternativ: array[...] of  tTyp
  fehlt
  fehlt  (alternativ: array[... , ...] of  tTyp
  fehlt



 Download HLP-Files


19. Juni 2011

19. Januar 2011

29. Juni 2010


06. April 2010


29. Oktober 2009