Virtual TreeView lässt sich nicht kompilieren...

Rund um die LCL und andere Komponenten
Antworten
alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Virtual TreeView lässt sich nicht kompilieren...

Beitrag von alexander »

Hi,

hmm ich habe versucht Virtual TreeView als Package zu öffnen. Ohne Probleme.
Wenn ich nun es kompilieren will (und danach installieren)
dann kommt folgeneder Fehler:
"mein Pfad zu dem packge"/virtualtrees.pas(3583,3) Error: Argument can't be assigned to
Und das ganze hier:

Code: Alles auswählen

function CalculateScanline(Bits: Pointer; Width, Height, Row: Integer): Pointer;
 
// Helper function to calculate the start address for the given row.
 
begin exit;
  if Height > 0 then  // bottom-up DIB
    Row := Height - Row - 1;
  // Return DWORD aligned address of the requested scanline.
  Integer(Result) := Integer(Bits) + Row * ((Width * 32 + 31) and not 31) div 8;    // hier!!!!
end;
hmmm... also ich kenne zwar Pointer, doch weiß ich jetzt nicht wie man dieses Fehler löst...
Mehr wundert mich aber, dass er überhaupt da ist, da ich keinen eizigen Beitrag zu diesem Problem finden konnte.

Noch mehr wundert mich aber, dass er direkt nach beginn exit aufruft, was ja dazu führt dass der Code wo er den fehler meldet nie ausgeführt wird. Was soll das? Ist das richtig so?

Hoffe ihr wisst Rat.

Gruß Alexander
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Welche Version, woher, welches Lazarus, welches fpc, welche Plattform, welches Betriebsystem.

Scanline wird von lazarus nicht unterstützt deshalb dieses exit am start der funktion. Wirkt sich genauso aus als wenn man die ganze Funktion in einen Kommentar setzt.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

Steht in meinen Angaben. ;-)
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

welche version, woher, welcher fpc.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Schreibs doch einfach nochmal, Laz 0.6.24 steht da zwar, aber nicht sicher, welcher FPC, ich würde mal denken 2.2.0. Aber wenns aus dem SVN ist, kanns ja auch bspw. FPC. 2.2.1 oder 2.3 sein ;)
Und eventuell ist auch das WidgetSet und die Plattform relevant, also 32 oder 64 bit...
Johannes

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

ubuntu 64; 64 bit
da human bei der trackbar probleme macht, habe ich gilouche-posh (irgendwo runtergeladen)
ahh ok.
virtual treview 4.0.17.26
von hier
http://sourceforge.net/project/showfile ... _id=183363" onclick="window.open(this.href);return false;
laut synaptic fp 2.20



EDIT:

Ok ich habe es jetzt in Kommentare gesetzt und nun kommt woanders ein Fehler:
"mein pfad"/virtualtrees.pas(18391,34) Error: Argument can't be assigned to

Code: Alles auswählen

function TBaseVirtualTree.InternalAddToSelection(NewItems: TNodeArray; NewLength: Integer;
  ForceInsert: Boolean): Boolean;
 
// Internal version of method AddToSelection which does not trigger OnChange events
 
var
  I, J: Integer;
  CurrentEnd: Integer;
  Constrained,
  SiblingConstrained: Boolean;
 
begin
 
  // The idea behind this code is to use a kind of reverse merge sort. QuickSort is quite fast
  // and would do the job here too but has a serious problem with already sorted lists like FSelection.
 
  // 1) Remove already selected items, mark all other as being selected.
  if ForceInsert then
  begin
    for I := 0 to NewLength - 1 do
      Include(NewItems[I]^.States, vsSelected);
  end
  else
  begin
    Constrained := toLevelSelectConstraint in FOptions.FSelectionOptions;
    if Constrained and (FLastSelectionLevel = -1) then
      FLastSelectionLevel := GetNodeLevel(NewItems[0]);
    SiblingConstrained := toSiblingSelectConstraint in FOptions.FSelectionOptions;
    if SiblingConstrained and (FRangeAnchor = nil) then
      FRangeAnchor := NewItems[0];
 
    for I := 0 to NewLength - 1 do
      if ([vsSelected, vsDisabled] * NewItems[I]^.States <> []) or
         (Constrained and (Cardinal(FLastSelectionLevel) <> GetNodeLevel(NewItems[I]))) or
         (SiblingConstrained and (FRangeAnchor^.Parent <> NewItems[I]^.Parent)) then
        Inc(Cardinal(NewItems[I]))          // hier!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      else
        Include(NewItems[I]^.States, vsSelected);
  end;
 
  I := PackArray(NewItems, NewLength);
  if I > -1 then
    NewLength := I;
 
  Result := NewLength > 0;
  if Result then
  begin
    // 2) Sort the new item list so we can easily traverse it.
    if NewLength > 1 then
      QuickSort(NewItems, 0, NewLength - 1);
    // 3) Make room in FSelection for the new items.
    if FSelectionCount + NewLength >= Length(FSelection) then
      SetLength(FSelection, FSelectionCount + NewLength);
 
    // 4) Merge in new items
    J := NewLength - 1;
    CurrentEnd := FSelectionCount - 1;
 
    while J >= 0 do
    begin
      // First insert all new entries which are greater than the greatest entry in the old list.
      // If the current end marker is < 0 then there's nothing more to move in the selection
      // array and only the remaining new items must be inserted.
      if CurrentEnd >= 0 then
      begin
        while (J >= 0) and (Cardinal(NewItems[J]) > Cardinal(FSelection[CurrentEnd])) do
        begin
          FSelection[CurrentEnd + J + 1] := NewItems[J];
          Dec(J);
        end;
        // early out if nothing more needs to be copied
        if J < 0 then
          Break;
      end
      else
      begin
        // insert remaining new entries at position 0
        Move(NewItems[0], FSelection[0], (J + 1) * SizeOf(Pointer));
        // nothing more to do so exit main loop
        Break;
      end;
 
      // find the last entry in the remaining selection list which is smaller then the largest
      // entry in the remaining new items list
      FindNodeInSelection(NewItems[J], I, 0, CurrentEnd);
      Dec(I);
      // move all entries which are greater than the greatest entry in the new items list up
      // so the remaining gap travels down to where new items must be inserted
      Move(FSelection[I + 1], FSelection[I + J + 2], (CurrentEnd - I) * SizeOf(Pointer));
      CurrentEnd := I;
    end;
 
    Inc(FSelectionCount, NewLength);
  end;
end;
EDIT: @monta, hab deinen Beitrag garnicht gesehn, und habe ich schon gemacht... ;-)
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

sieste woher sollt ich jetz wissen das du 64 bit nimmst
die anpassungen dafür hab ich erst im svn gemacht und das lässt sich nur mit lazarus 0.9.25 verwenden

also nimmst du entweder 32 bit bis die 0.9.26 raus ist oder das virtualtreeview ausm svn und lazarus ausm svn. in der 0.9.25 haben sich leider ein paar sachen geändert die anpassungen am virtualtrees nötig machten deswegen kann ich jetzt noch kein neues package zur verfügung stellen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

Christian hat geschrieben:virtualtreeview ausm svn und lazarus ausm svn.
mache ich...
Christian hat geschrieben:in der 0.9.25 haben sich leider ein paar sachen geändert die anpassungen am virtualtrees nötig machten deswegen kann ich jetzt noch kein neues package zur verfügung stellen.
hmm...... klappt also beides neustes aus dem svn? Oder klappt es leider trotzdem nicht?
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Doch beides ausm svn klappt jedenfals bei mir wenn du da probleme hast kann ichs auch sofort nachziehn.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Also bei mir ging es mit ner Version von gestern auch Problemlos.

Was geht denn nicht?

Was bei mir nicht geht (unabhängig vom vtv) ist ein make auf der Konsole, Lazarus erstellen aus der LazarusIDE heraus geht aber Problemlos.
Johannes

Antworten