Einzelnen Beitrag anzeigen

SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
313 Beiträge
 
Delphi 12 Athens
 
#25

AW: Reise von Berlin nach Athens

  Alt 10. Sep 2024, 13:28
Gab es dort eine Überladung mit Variant? (wo dann drin der interne Typ des Variant ausgewertet wird)

Lösungen z.B. für Boolean:
Delphi-Quellcode:
json.AddPair(prop, Boolean(value));
json.AddPair(prop, VarToBool(value));
Nein, ich habe da nichts überladen. Das mit dem VarTo.. sieht interessant aus, das werde ich versuchen (im Moment habe ich es auskommentiert, weil ich noch andere Probleme habe ).

Gerade ein anderes kniffliges Problem:
Ich habe SynEdit aus dem GetIt installiert.
Und weil im Git es dazu keine Issue gibt (und auch wenn ich ein neues Projekt damit starte, problemlos), wird das wahrscheinlich nur bei mir das Problem sein. In einem neuen Projekt funktioniert das SynEdit mit den selben Einstellungen

Wenn ich jetzt mein Projekt öffne, das ein SynEdit enthält, sagt mir die IDE, bevor noch irgendwas davon erscheint:
Zitat:
Listenindex außerhalb des gültigen Bereichs (0). TList<System.Integer> ist leer
Aha!?

Die Details erzählen mir..
Zitat:
[23308D4C]{SynEditDR290.bpl} System.Generics.Collections. + $24
[23319B83]{SynEditDR290.bpl} Syneditwordwrap.TSynWordWrapPlugin.RowCount + $1F
[233465D9]{SynEditDR290.bpl} Synedit.TCustomSynEdit.GetDisplayRowCount + $75
[23312CCF]{SynEditDR290.bpl} Syneditkbdhandler.Finalization + $A67
[23312D8A]{SynEditDR290.bpl} Syneditkbdhandler.Finalization + $B22
[23339F5D]{SynEditDR290.bpl} Synedit.TCustomSynEdit.UpdateScrollBars + $41
[23341971]{SynEditDR290.bpl} Synedit.TCustomSynEdit.SizeOrFontChanged + $D1
[2333A748]{SynEditDR290.bpl} Synedit.TCustomSynEdit.WMSize + $1C
Wenn ich die Komponente in ein neues Projekt kopiere, kommt es nicht zu diesem Fehler.

Beim Ausführen meines Programms knallt es mit der selben Meldung in der unit SynEditWordWrap hier (die // stammen vom Autor):
Delphi-Quellcode:
  // fLineOffsets[n] is the index of the first row of the [n+1]th line.
  // e.g. Starting row of first line (0) is 0. Starting row of second line (1)
  // is fLineOffsets[0]. Clear?

  TSynWordWrapPlugin = class(TInterfacedObject, ISynEditBufferPlugin)
  private
    fLineOffsets: TList<Integer>;

[...]
constructor TSynWordWrapPlugin.Create(aOwner: TCustomSynEdit);
begin
  inherited Create; // just to work as reminder in case I revert it to a TComponent...
  if aOwner = nil then
    raise Exception.Create( 'Owner of TSynWordWrapPlugin must be a TCustomSynEdit' );
  fEditor := aOwner;
  fLineCount := fEditor.Lines.Count;
  fLineOffsets := TList<Integer>.Create;
  fRowLengths := TList<Integer>.Create;
  Reset;
end;

function TSynWordWrapPlugin.RowCount: integer;
begin
  if fLineCount > 0 then
    Result := fLineOffsets[fLineCount - 1]; // <---- da: EArgumentOutOfRangeException

  Assert(fRowLengths.Count = Result);
end;
Ich kenne mich mit Generics nicht aus - fehlt da was bei der Initialisierung? Woran kann das sonst liegen und wie behebe ich das?
  Mit Zitat antworten Zitat