Wartości w checkbox lub listbox

Wartości w checkbox lub listbox
0

no i gdzie ten WTF?? bo u mnie wyświetla static 6. Powiedzmy sobie może coś żeby to było jasne - ja używam Delphi a nie FP. I czy tam będzie AnsiString czy string czy PChar to po prostu działa.

Czytanie ze zrozumieniem: "Proponuję ustawić lokalną zmienną s na coś innego niż const". Nawet taką prostą instrukcję trudno zrozumieć? eh. Ulituję się, dopisz np. s:='static'+chr(random(256));.

BTW ale oczywiście z tobą nie ma się co kłócić bo ty i tak wiesz lepiej...
dla mnie EOT jak chcesz to możesz dalej przedstawiać swoje teorie na temat zbawienia świata

To żegnam.

A generyk to wg ciebie magiczny twór nie zajmujący żadnego miejsca w pamięci nie mający wewnątrz siebie żadnego rekordu opisującego parę string => string? Musisz się przespać lub zacząć czytać podstawy programowania.

W implementacji FPC nie ma żadnego rekordu. To po prostu tobie się coś wydaje (jak widać dalej źle).

Niby jakim cudem te nakłady będą mniejsze? W generyku musisz co najmniej zdublować oryginalny string z listbox'a. No chyba że nawet nie przeczytałeś tytułu tematu lub nie zrozumiałeś (czytanie ze zrozumieniem się kłania) i myślisz że do listbox'a dodaje się dodatkowy string aby mieć mapę string -> string.

Czytanie ze zrozumieniem kazało mi założyć że chodzi o mapę string-string (nie o żadną kontrolkę). O tym jest mowa i przedstawiam najlepsze rozwiązanie takiej mapy. Nie muszę dublować żadnego stringa, raz jeszcze pleciesz bzdury o budowie ansistringów (aka string w Delphi).

Nie wspominając już o tym że w listbox'ie może być "a"->"b", "a"->"c", "a"->"b" zaś w proponowanej mapie nie może być.

A to czemu nie może być? Możesz mnie oświecić? Czy to ja mam ciebie oświecić o twojej niewiedzy?

to oczywiście czytałeś pytanie ("Czy można w Delphi wpisać do listboxa lub checkboxa 2 wartości") i oczywiście to jest twoja odpowiedź...

Ale ten temat dotyczy czegoś innego.

Zgoda, chodziło mi o rozwiązanie ogólne. Tylko tu pojawia się inne pytanie: Po co używać ListBoxa (który z założenia jest listą) do robienia mapy? Generalnie to jestem za trzymaniem danych w wewnętrznej strukturze i filtrowanie danych do kontrolek. Ale jeżeli ktoś chce pisać prosty system w którym coś chce się dopisać do stringa coś to normalni programiści robią właśnie podejście z klasą. Tylko teraz pytanie, czemu mówicie o milionach elementów, tak jakby temat dotyczył takich właśnie wielkości? Skoro mówimy o prostym pytaniu jak dodać dodatkowe dane do TStringList to po prostu robimy klasę i po sprawie. Natomiast z niewiadomych mi powodów rozwijacie temat przechodząc i do budowy stringów i mówicie o wielkościach tysiące razy większych niż chodzi o to pytaczowi. Więc czy to ja nie potrafię zrozumieć pytania czy wy? Ja po prostu rozwijam wasze myśli, nie moim problemem jest wasza nadinterpretacja problemu. Ja tu tylko mówiłem o budowie ansistringów, TStringList i map, natomiast nie interesował mnie bądź co bądź podstawowy problem pytacza.

Nie ja muszę ogarnąć temat generyków tylko ty musisz ogarnąć jak te generyki się robi.

Ależ oczywiście, bo nigdy nie używałem/tworzyłem generyków.

W mapie para string -> string tworzy rekord w którym oprócz tych dwóch stringów w zależności od rozwiązania może być nawet kilka dodatkowych pól, bez tego nie da się stworzyć mapy.

Twórcy biblioteki fgl czitowali, nie ma rekordu. To że w pamięci to wygląda jak rekord nie robi z tego rekordu. To jest po prostu lista w której jest ileś pointerów (2*rozmiar mapy) i gdzie tu problem? Ja tu rekordów nie widzę.

_13th_Dragon
  • Rejestracja:prawie 20 lat
  • Ostatnio:19 dni
0
-321oho napisał(a):

A generyk to wg ciebie magiczny twór nie zajmujący żadnego miejsca w pamięci nie mający wewnątrz siebie żadnego rekordu opisującego parę string => string? Musisz się przespać lub zacząć czytać podstawy programowania.

W implementacji FPC nie ma żadnego rekordu. To po prostu tobie się coś wydaje (jak widać dalej źle).

-321oho napisał(a):

Ależ oczywiście, bo nigdy nie używałem/tworzyłem generyków.
Zamiast przemyśleć o czym mowa, czepiasz się słów. Musi być jakiś rekord trzymający dwa napisy, i nie ważne jak ten rekord jest zaimplementowany, jako record jako TObject lub pewien obszar pamięci w którym wpakowane jeden po drugim wskaźniki do napisów lub nawet jako pewien obszar pamięci w którym te dwa napisy będą trzymane w postaci spakowanej. Tak czy owak będzie to rekord. Jeżeli w twoim pojmowaniu rekord to tylko i wyłącznie record to chyba jednak musisz poczytać jakieś podstawy.

-321oho napisał(a):

Czytanie ze zrozumieniem kazało mi założyć że chodzi o mapę string-string (nie o żadną kontrolkę). O tym jest mowa i przedstawiam najlepsze rozwiązanie takiej mapy. Nie muszę dublować żadnego stringa, raz jeszcze pleciesz bzdury o budowie ansistringów (aka string w Delphi).
W takim razie przeczytaj jeszcze raz tytul tematu: - "Wartości w checkbox lub listbox" i powiedz którego słowa nie rozumiesz.

-321oho napisał(a):

Nie wspominając już o tym że w listbox'ie może być "a"->"b", "a"->"c", "a"->"b" zaś w proponowanej mapie nie może być.
A to czemu nie może być? Możesz mnie oświecić? Czy to ja mam ciebie oświecić o twojej niewiedzy?
Dobrze oświecę cię w przypadku listbox'a z trzema wierszami "a" jak w powyższym przykładzie do pierwszego "a" podpięte "b", do drugiego "a" podpięte "c", a do trzeciego "a" podpięte znowu "b". W przypadku mapy i dodania powyższych trzech par klucz->wartość wynikiem wyszukiwania klucza będzie zawsze zbiór {"b","c"}. Widzisz różnice?

-321oho napisał(a):

...natomiast nie interesował mnie bądź co bądź podstawowy problem pytacza.
Pozostali odpowiadają pytaczowi, oraz próbują wyjaśnić ci o czym mowa. Owszem milion elementów w listbox'ie to jawna przesada, ale 50 tyś widziałem (owszem bez podpiętego czegokolwiek), musiałem po kimś przerabiać tą formatkę bo niestety listbox kiepsko sobie z tym radził.

-321oho napisał(a):

W mapie para string -> string tworzy rekord w którym oprócz tych dwóch stringów w zależności od rozwiązania może być nawet kilka dodatkowych pól, bez tego nie da się stworzyć mapy.

Twórcy biblioteki fgl czitowali, nie ma rekordu. To że w pamięci to wygląda jak rekord nie robi z tego rekordu. To jest po prostu lista w której jest ileś pointerów (2rozmiar mapy) i gdzie tu problem? Ja tu rekordów nie widzę.
</quote>Powiedz mi czym różni się dla ciebie tablica N rekordów po dwa pointery od tablicy 2
N pointerów? A no tak fizycznie tego nie podzielili na rozmiar mapy elementów! Teraz to nie rekordy więc żadnej pamięci nie zajmują. Tak czy owak masz 2*rozmiar_wskaźnika na każdą parę z mapy. Ja to nazywam rekordem (nie mylić z record). Poza tym, to wszystko? żadnej innej pamięci ta mapa nie zajmuje?


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
flowCRANE
"Wartości w checkbox lub listbox" - CheckBox nie posiada listy, "CheckListBox" owszem;
_13th_Dragon
Ja to rozumiałem jako ComboBox lub CheckListBox, ale tak czy owak w obu przypadkach chodzi o TStrings
0

Zamiast przemyśleć o czym mowa, czepiasz się słów. Musi być jakiś rekord trzymający dwa napisy, i nie ważne jak ten rekord jest zaimplementowany, jako record jako TObject lub pewien obszar pamięci w którym wpakowane jeden po drugim wskaźniki do napisów lub nawet jako pewien obszar pamięci w którym te dwa napisy będą trzymane w postaci spakowanej. Tak czy owak będzie to rekord.

To twoim zdaniem:

  • tablica jest rekordem
  • obiekt jest rekordem
  • klasa jest rekordem
  • program jest rekordem (najs)

Wychodzi że twoim zdaniem wszystko co da się umieścić w pamięci jest rekordem (cała przestrzeń wirtualna procesu też jest rekordem).

Ah i tak, czepiam się słów, jakbyś mnie nie znał. Nie robiłbym problemów gdybyś nazwał to inaczej, tylko problem leży w tym że nazwałeś to rekordem wobec czego zrozumiałem to trochę inaczej. Jeżeli masz zamiar się z moją interpretacją kłócić to proszę bardzo, nie mniej rekord to jest pewna konstrukcja Pascala.

Jeżeli w twoim pojmowaniu rekord to tylko i wyłącznie record to chyba jednak musisz poczytać jakieś podstawy.

Jakie podstawy? Słucham uważnie.

W takim razie przeczytaj jeszcze raz tytul tematu: - "Wartości w checkbox lub listbox" i powiedz którego słowa nie rozumiesz.

A przeczytałeś cały post? Ja tu tylko mówiłem o budowie ansistringów, TStringList i map, natomiast nie interesował mnie bądź co bądź podstawowy problem pytacza.

Dobrze oświecę cię w przypadku listbox'a z trzema wierszami "a" jak w powyższym przykładzie do pierwszego "a" podpięte "b", do drugiego "a" podpięte "c", a do trzeciego "a" podpięte znowu "b". W przypadku mapy i dodania powyższych trzech par klucz->wartość wynikiem wyszukiwania klucza będzie zawsze zbiór {"b","c"}. Widzisz różnice?

Kopiuj
program DragonNieZnaGenerykow;
{$mode objfpc}{$H+}
uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes
  { you can add units after this },fgl;
type
  T13h=specialize TFPGMap<String,String>;
var
  g:T13h;
  i:integer;
begin
  g:=T13h.Create;
  g.Add('a','b');
  g.Add('a','c');
  g.Add('a','b');
  for i:=0 to g.Count-1 do writeln(g.Keys[i],#32,g.Data[i]);
end.

Try it yourself
Może zamiast się ze mną kłócić posłuchaj moich dobrych rad i poucz się nieco o ansistringach i generykach.

Pozostali odpowiadają pytaczowi, oraz próbują wyjaśnić ci o czym mowa. Owszem milion elementów w listbox'ie to jawna przesada, ale 50 tyś widziałem (owszem bez podpiętego czegokolwiek), musiałem po kimś przerabiać tą formatkę bo niestety listbox kiepsko sobie z tym radził.

No to proszę bardzo odpowiadajcie pytaczowi, tylko w takim wypadku rozważacie problemy nieadekwatne do problemu pytacza. Dlatego też uznałem że nie chodzi już o pytanie i począłem zwalczanie herezji o ansistringach i ich pakowaniu jako obiekt do TStringList. Ponieważ mówiliście o milionie elementów dlatego też zaproponowałem generyk. Ja nie odpowiadam pytaczowi, a wam. Wy już również nie odpowiadacie pytaczowi tylko prowadzicie rozmowę luźno związaną z tematem (czego przejawem jest np. milion elementów).

Powiedz mi czym różni się dla ciebie tablica N rekordów po dwa pointery od tablicy 2N pointerów? A no tak fizycznie tego nie podzielili na rozmiar mapy elementów! Teraz to nie rekordy więc żadnej pamięci nie zajmują. Tak czy owak masz 2rozmiar_wskaźnika na każdą parę z mapy. Ja to nazywam rekordem (nie mylić z record).

Zacznijmy od tego że record to słowo kluczowe Pascala, po polsku to jest rekord albo struktura (zależy od języka programowania). A czym się ona różni? Np. wyrównaniem, kolejnością elementów w pamięci. Tablica też zajmuje pamięć, tylko gdybyśmy teraz zrobili coś takiego: TFPGMap<Byte,Byte>; to jest duża szansa że to nie będzie to samo. Więcej będzie zajmować rekord ze względu na wyrównanie.
Rozumiem twoje pojmowanie rekordów, nie mniej to nie są rekordy w rozumieniu Pascala. A ponieważ jesteśmy w dziale Pascal/Delphi uznałem że chodzi o rekordy w ujęciu Pascalowym.

Poza tym, to wszystko? żadnej innej pamięci ta mapa nie zajmuje?

FKeySize,FDataSize,FDuplicates,FSorted,FOnKeyPtrCompare,FOnDataPtrCompare,FList,FCount,FCapacity,FItemSize . W sumie pewnie z 20-30 bajtów.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.