CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - lista elementów

lista elementów

dział ogólny

lista elementów

Nowy postprzez Android » wtorek, 9 lipca 2013, 22:49

Witam,
chciałem skorzystać z klasy TList do przechowywania elementów TColor, w helpie podana definicja wskazuje ze jest to szablon w zwiazku z czym powinno być poprawne
Kod: Zaznacz cały
TList<TColor> lista;
a nie jest. Moje pytanie - czemu?
Metoda add tej klasy przyjmuje jedynie wskazniki typu void co wymusza samodzielne pilnowanie obiektow, "pamietanie" o typie, rzutowanie itd.
Jest jakas klasa pochodna z VCL która ma funkcjonalność taką jak std::vector?
Z góry dziękuje za pomoc.
Avatar użytkownika
Android
Bladawiec
Bladawiec
 
Posty: 46
Dołączył(a): poniedziałek, 5 kwietnia 2010, 16:51
Podziękował : 16
Otrzymał podziękowań: 2
System operacyjny: Windows 7 Pro x64
Kompilator: C++ Builder XE2
Gadu Gadu: 0
    Windows 7Firefox

Re: lista elementów

Nowy postprzez Cyfrowy Baron » środa, 10 lipca 2013, 00:21

Android napisał(a):Jest jakas klasa pochodna z VCL która ma funkcjonalność taką jak std::vector?


Nie, użyj vector.

TList to nie vector i należy się nią posługiwać inaczej, np. tak:

KOD cpp:     UKRYJ  
#include <memory>
//---------------------------------------------------------------------------

typedef struct AList
{
  TColor kolor;
} TAList;
typedef TAList* PAList;

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 TColor kolor = clRed;
 std::auto_ptr<TAList> structKolor(new TAList);
 structKolor->kolor = clRed;

 TList *lista = new TList;
 lista->Add( structKolor.get() );

 /* sprawdzam co zawiera lista */
 TAList *AStruct = (PAList) lista->Items[0];
 Caption = ColorToString( AStruct->kolor );

delete lista;
}




Nigdzie w pliku pomocy nie znalazłem informacji, że jest to szablon, a jedynie, że jest to lista uporządkowana przechowująca tablicę wskaźników.

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
Android
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: lista elementów

Nowy postprzez polymorphism » środa, 10 lipca 2013, 10:12

Try this:
KOD cpp:     UKRYJ  
Generics::Collections::TList<TColor> lista;
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
Android
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: lista elementów

Nowy postprzez Cyfrowy Baron » środa, 10 lipca 2013, 11:35


[BCC32 Error] Unit1.cpp(122): E2316 'TList' is not a member of 'Collections'

Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: lista elementów

Nowy postprzez polymorphism » środa, 10 lipca 2013, 12:07

A plik System.Generics.Collections.hpp załączony?
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: lista elementów

Nowy postprzez Cyfrowy Baron » środa, 10 lipca 2013, 12:51

Załączony, ale to niczego nie zmienia. W C++Builder XE2 jednak nie trzeba załączać oddzielnie bibliotek z grupy System, są hurtowo załączane biblioteką System.Classes.hpp.

Opisany przez Ciebie sposób działa w Delphi, w C++Builder plik pomocy zaleca tak to stosować:

KOD cpp:     UKRYJ  
TList__1<TColor> *lista = new TList__1<TColor>();


ale to też wywołuje błędy:


[ILINK32 Error] Error: Unresolved external 'System::Generics::Collections::TList__1<System::Uitypes::TColor>::' referenced from D:\EMBARCADERO_PROJECT_XE2\Project1\WIN32\DEBUG\UNIT1.OBJ
[ILINK32 Error] Error: Unresolved external '__fastcall System::Generics::Collections::TList__1<System::Uitypes::TColor>::TList__1<System::Uitypes::TColor>()' referenced from D:\EMBARCADERO_PROJECT_XE2\Project1\WIN32\DEBUG\UNIT1.OBJ
[ILINK32 Error] Error: Unable to perform link

Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: lista elementów

Nowy postprzez polymorphism » środa, 10 lipca 2013, 13:02

Sugerowałem się dokumentacją wiszącą w sieci. Jak widać są jakieś problemy, więc niech po prostu użyje szablonów z STL-a.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: lista elementów

Nowy postprzez Android » środa, 10 lipca 2013, 19:27

dzięki za pomoc, finalnie skorzystałem z vector'a ale dobrze wiedzieć czy coś źle robię czy sie po prostu nie da tego zrobić :)
Avatar użytkownika
Android
Bladawiec
Bladawiec
 
Posty: 46
Dołączył(a): poniedziałek, 5 kwietnia 2010, 16:51
Podziękował : 16
Otrzymał podziękowań: 2
System operacyjny: Windows 7 Pro x64
Kompilator: C++ Builder XE2
Gadu Gadu: 0
    Windows 7Firefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 11 gości

cron