Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi template verkettete liste (https://www.delphipraxis.net/148702-template-verkettete-liste.html)

Khabarakh 7. Mär 2010 11:30

Re: template verkettete liste
 
Du musst himi wahrscheinlich nicht die Funktionsweise eines GCs erklären. Eher deine Idee, dass es sowas unter Delphi.Win32 gäbe :gruebel: .

JnZn558 7. Mär 2010 12:27

Re: template verkettete liste
 
Zitat:

Zitat von ghost007

danke fuer deine tips, himitsu und Khabarakh haben beide wohl recht, bei delphi win32 sehe ich auch nicht ein, dass da kein GC gaebe. schliesslich kein DotNet

im moment sieht mein code folgendes aus

Delphi-Quellcode:
PList = ^vList;
  vList = record
    nCount   : Cardinal; // number of datas
    pItem   : Pointer;  // data pointer
    pNextItem : PList;    // next item
    pLastItem : PList;    // previous item
  end;

  vArray = class
    m_list : vList;

  public
    constructor Create(pValue: Pointer);
    destructor Destroy; override;
  end;

  constructor ZArray.Create(pValue: Pointer);
  var
    p : Pointer;
  begin
    if Assigned(pValue) then
    begin
      with Self do
      begin
        m_list.nCount   := 1;
        New(m_list.pItem);
        m_list.pItem^     := pValue^; // hier soll der fehler sein
        m_list.pNextItem := nil;
        m_list.pLastItem := nil;
      end
    end;
  end;
folgende fehler spuckt der aus
Zitat:

E2015 Operator not applicable to this operand type
oh Sorry, mir war ein tippfehler unterlaufen.

daywalker9 7. Mär 2010 13:14

Re: template verkettete liste
 
Wo den?

Also in welcher Zeile?

DeddyH 7. Mär 2010 13:24

Re: template verkettete liste
 
Ich steig da nicht mehr durch: PList, ZList, vList, m_list, was ist was? Mir scheint, da ist die Zuordnung durcheinander geraten.

Khabarakh 7. Mär 2010 13:31

Re: template verkettete liste
 
Zitat:

Zitat von DeddyH
Ich steig da nicht mehr durch: PList, ZList, vList, m_list, was ist was?

dito, aber es muss auf jeden Fall
Delphi-Quellcode:
m_list.pItem := pValue;
heißen.
Und ein with self bewirkt nicht wirklich viel ;) .

JnZn558 7. Mär 2010 13:49

Re: template verkettete liste
 
ein tippfehler war mir unterlaufen, ich hab es nun geaendert.

Delphi-Quellcode:
PList = ^vList;
  vList = record
    nCount   : Cardinal; // number of datas
    pItem   : Pointer;  // data pointer
    pNextItem : PList;    // next item
    pLastItem : PList;    // previous item
  end;

  vArray = class
    m_list : vList;

  public
    constructor Create(pValue: Pointer);
    destructor Destroy; override;
  end;

  constructor ZArray.Create(pValue: Pointer);
  var
    p : Pointer;
  begin
    if Assigned(pValue) then
    begin
      with Self do
      begin
        m_list.nCount   := 1;
        New(m_list.pItem);
        m_list.pItem^     := pValue^; // hier soll der fehler sein
        m_list.pNextItem := nil;
        m_list.pLastItem := nil;
      end
    end;
  end;
Zitat:

Zitat von Khabarakh
Zitat:

Zitat von DeddyH
Ich steig da nicht mehr durch: PList, ZList, vList, m_list, was ist was?

dito, aber es muss auf jeden Fall
Delphi-Quellcode:
m_list.pItem := pValue;
heißen.
Und ein with self bewirkt nicht wirklich viel ;) .

ich moechte den wert kopieren, nicht der adresse von pValue, denn wenn die pValue im fall auf NIL gesetzt wird, dann schmiert pItem auch ab, is doch so nicht?

Khabarakh 7. Mär 2010 17:21

Re: template verkettete liste
 
Zitat:

Zitat von JnZn558
ein tippfehler war mir unterlaufen, ich hab es nun geaendert.

Für Records und Klassen aber bitte einen T-Präfix benutzen. Und für den Rest keine ungarische Notation :pale: .

Zitat:

ich moechte den wert kopieren, nicht der adresse von pValue
Damit kopierst du die Adresse in pValue. Den referenzierten Wert kannst du schlecht kopieren, wenn du nicht einmal seine Größe kennst.
Zitat:

denn wenn die pValue im fall auf NIL gesetzt wird, dann schmiert pItem auch ab, is doch so nicht?
Nach dem Aufruf? Nein, es ist eben der Wert von (= die Adresse in) pValue.

JnZn558 7. Mär 2010 23:30

Re: template verkettete liste
 
Zitat:

Zitat von Khabarakh
Zitat:

Zitat von JnZn558
ein tippfehler war mir unterlaufen, ich hab es nun geaendert.

Für Records und Klassen aber bitte einen T-Präfix benutzen. Und für den Rest keine ungarische Notation :pale: .

Zitat:

ich moechte den wert kopieren, nicht der adresse von pValue
Damit kopierst du die Adresse in pValue. Den referenzierten Wert kannst du schlecht kopieren, wenn du nicht einmal seine Größe kennst.
Zitat:

denn wenn die pValue im fall auf NIL gesetzt wird, dann schmiert pItem auch ab, is doch so nicht?
Nach dem Aufruf? Nein, es ist eben der Wert von (= die Adresse in) pValue.

danke sehr fuer deine hilfe, da der wert nicht schlecht kopieren laesst, is dann nix mehr zu machen. hehe
ich muss damit wohl leben, was delphi zu bieten hat


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:00 Uhr.
Seite 2 von 2     12   

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