Entwickler-Ecke

Programmierwerkzeuge - Fehlermeldung mit KOL


Radioactive - Do 24.02.05 18:06
Titel: Fehlermeldung mit KOL
Ich habe im Forum öfters von KOL gehört und mich schließlich dazu entschlossen, es auch mal auszuprobieren. Gesagt getan. Ich habs mir dongeloaded und will ein Testprogramm starten, da hagelt es Fehlermeldungen (die nichts mit meinem Quelltext zu tun haben):

[Fehler] SysUtils.pas(2170): Der linken Seite kann nichts zugewiesen werden
[Fehler] SysUtils.pas(2170): Der linken Seite kann nichts zugewiesen werden
[Warnung] SysUtils.pas(5492): Symbol 'RaiseList' ist veraltet
[Warnung] SysUtils.pas(5492): Symbol 'RaiseList' ist veraltet
[Warnung] SysUtils.pas(5492): Symbol 'RaiseList' ist veraltet
[Warnung] SysUtils.pas(5492): Symbol 'RaiseList' ist veraltet

Die ersten beiden Meldungen sind ja noch ganz leicht wegzubekommen, indem man das const (erste Zeile) in ein var verwandelt. Die Warnungen werden dann auch ignoriert.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
const
  ExitProcList: PExitProcInfo = nil;

procedure DoExitProc;
var
  P: PExitProcInfo;
  Proc: TProcedure;
begin
  P := ExitProcList;
  ExitProcList := P^.Next;
  ExitProc := P^.SaveExit;
  Proc := P^.Proc;
  Dispose(P);
  Proc;
end;


Doch jetzt kommts erst richtig:
[Fataler Fehler] SysUtils.pas(3696): Unit Variants wurde mit einer unterschiedlichen Version von SysUtils.EVariantError complimiert

Wenn man auf die Fehlermeldung doppelklickt, wird die letzte Zeile als Fehlerhaft angesehen.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
{ String formatting routines }

procedure FormatError(ErrorCode: Integer; Format: PChar; FmtLen: Cardinal);
const
  FormatErrorStrs: array[0..1of PResStringRec = (
    @SInvalidFormat, @SArgumentMissing);
var
  Buffer: array[0..31of Char;
begin
  if FmtLen > 31 then FmtLen := 31;
  if StrByteType(Format, FmtLen-1) = mbLeadByte then Dec(FmtLen);
  StrMove(Buffer, Format, FmtLen);
  Buffer[FmtLen] := #0;
  ConvertErrorFmt(FormatErrorStrs[ErrorCode], [PChar(@Buffer)]);
end;

procedure FormatVarToStr(var S: stringconst V: Variant);
begin
  S := V;
end;

// ...


Es kann doch wohl nicht ernsthaft sein, dass KOL solche Fehler produziert. Man sollte doch meinen, die kennen sich aus. Also, was soll ich machen?
(Ich benutze Delphi 7 Personal (Build 4.453) auf einem Windows XP Home System)


retnyg - Do 24.02.05 18:26

das liegt an der sysutils pas. hast du die getweakte version in verwendung oder die originale ?

ich löse diese probleme im normalfall indem ich den verweis auf die sysutils.pas, die probleme erzeugt, kurzzeitig aus dem bibliothekspfad entferne, und nach der kompilierung wieder zurückstelle.


Radioactive - Do 24.02.05 20:37

Ich habe mir von der KOL Homepage (http://bonanzas.rinet.ru/) den Installer samt allem heruntergeladen. Das mit dem SysUtils rausnehmen ist ne Möglichkeit.


retnyg - Do 24.02.05 20:56

den installer hat roller gemacht und ist alles andere als perfekt. wenn du länger mit KOL arbeitest wirst du dich daran gewöhnen dass du im bibliothekspfad einiges umstellen musst.
die günstigste lösung ist IMHO:

-ein KOL-Ordner, darin kol, mck, objects, classes und sonstige Kleinkomponenten <- der steht fix in deinem Bib.pfad
-ein system unterordner für die jew. delphi version, beinhaltet system und sysutils

die 2 einträge ganz vorne im bib.pfad, dann kannst du sie schnell rausnehmen um irgendeine VCL-Kompo zu installieren und nachher wieder reinpasten.


retnyg - Do 24.02.05 21:14

ahja, und nochwas. bei dem installer von roller liegt auch in dem ordner indy die sysutils.pas drin rum, was zu fehlern führen kann, da der pfad standardmässig dabei ist.


Radioactive - Do 24.02.05 23:08

Ich habe es jetzt mal ohne Installer gemacht, und da klappt alles bestens.
Danke!
Was heißt IMHO?


retnyg - Do 24.02.05 23:09

in my humble opinion