Lazarus 2.2.0 (2022.01.05.)
Letöltés

  • Oldal:
  • 1

TÉMA:

Rendezés magyar abc szerint 2016 jan. 07 19:50 #1763

  • ejbenjaro
  • ejbenjaro profilkép Témaindító
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 66
  • Köszönetek: 4
Köszi!
Ez lehet jó lesz nekem, mivel StringGrid oszlopait szeretném rendezni és ugye ott minden oszlop egy egy TStrings leszármazott, mint a StringList is, ha jól olvastam.
Mottó:
"Az ember sokszor más mint aminek látszik. De ritkán jobb..."
--
Gép : Asus P5G41T-M LX, Intel Celeron DC E3400, 4GB DDR3, 320GB SATA2, minden más integrált.
OS : Ubuntu 14.04
--
web: lassuviz.blogspot.hu/

Rendezés magyar abc szerint 2016 jan. 04 09:54 #1744

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 472
  • Köszönetek: 80
Ma volt egy kis időm és kipróbáltam a következő pofon egyszerű dolgot... és láss csodát a TStringList-ben elhelyezett betűk a magyar ábécének megfelelően lettek sorba rendezve (Linux, LANG=hu_HU.UTF-8).
(Windows-on nem próbáltam, de az eredmény minden bizonnyal azonos lesz, mivel a Lazarus UTF-8 kódolást használ)
var
  SL:TStringList;
  I:Integer;
 
{
 // A WideStrinManager is valószínűleg ugyanezt csinálja, az eredmény legalábbis ugyanaz. Lásd az SL.Sort(..) és az SL.CustomSort(...) hívásokat lentebb (utóbbit  megjegyzésben)...
function UTF8Osszehasonlitas(List: TStringList;Index1: Integer;Index2: Integer):Integer;
begin
   Result:=UTF8CompareStrCollated(List[Index1],List[Index2]);
end;
}
 
begin
  SL:=TStringList.Create;
  SL.Add('a');
  SL.Add('á');
  SL.Add('e');
  SL.Add('é');
  SL.Add('i');
  SL.Add('í');
  SL.Add('o');
  SL.Add('ó');
  SL.Add('ö');
  SL.Add('ő');
  SL.Add('u');
  SL.Add('ú');
  SL.Add('ü');
  SL.Add('ű');
  // a fentebbi magánhangzókat az alábbi mássalhangzók közé helyesen kell besorolnia a .Sort eljárásnak
  SL.Add('b');
  SL.Add('c');
  SL.Add('d');
  SL.Add('f');
  SL.Add('g');
  SL.Add('h');
  SL.Add('j');
  SL.Add('k');
  SL.Add('l');
  SL.Add('m');
  SL.Add('n');
  SL.Add('p');
  SL.Add('q');
  SL.Add('r');
  SL.Add('s');
  SL.Add('t');
  SL.Add('v');
  SL.Add('w');
  SL.Add('x');
  SL.Add('y');
  SL.Add('z');
 
  SL.Sort;
  // SL.CustomSort(@UTF8Osszehasonlitas); // Lásd az UTF8Osszehasonlitas eljárást megjegyzésben fentebb...
 
  for I:=0 to SL.Count-1 do WriteLn(SL[I]);
 
  SL.Free;
 
end.
Kis és nagybetűk használata esetén a TStringList.CaseSensitive szükség szerinti beállítása hasznos lehet.
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 2.3.0 -- FPC 3.3.1-- GNU/Linux 5.4.0 x86_64

Rendezés magyar abc szerint 2016 jan. 02 13:34 #1742

  • ejbenjaro
  • ejbenjaro profilkép Témaindító
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 66
  • Köszönetek: 4
Köszi. Azt hittem van valami kész, egyszerűbb, megoldás. Esetleg a unicodedata unit nem használható ilyenre?
Mottó:
"Az ember sokszor más mint aminek látszik. De ritkán jobb..."
--
Gép : Asus P5G41T-M LX, Intel Celeron DC E3400, 4GB DDR3, 320GB SATA2, minden más integrált.
OS : Ubuntu 14.04
--
web: lassuviz.blogspot.hu/

Rendezés magyar abc szerint 2016 jan. 01 17:42 #1741

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 472
  • Köszönetek: 80
Az ABC betűit dobd egy tömbbe és a rendezendő karakterláncokat az adott karakterük e tömbbeli pozíciója alapján sorold előbbre vagy hátrébb... (hirtelen ez jutott eszembe)
+ vedd figyelembe, hogy egyes karakterkódolások esetén (pl. UTF-8) a speciális (nem ASCII) karakterek tényleges mérete több bájt is lehet.
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 2.3.0 -- FPC 3.3.1-- GNU/Linux 5.4.0 x86_64

Rendezés magyar abc szerint 2016 jan. 01 13:57 #1740

  • ejbenjaro
  • ejbenjaro profilkép Témaindító
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 66
  • Köszönetek: 4
Sziasztok!

Tudtok valami megoldást, hogy hogyan tudnék adatokat a magyar abc szerint rendezni? Esetleg ha valami példakódot tudnátok adni, az jó lenne.

Válaszaitokat előre is köszönöm!
Mottó:
"Az ember sokszor más mint aminek látszik. De ritkán jobb..."
--
Gép : Asus P5G41T-M LX, Intel Celeron DC E3400, 4GB DDR3, 320GB SATA2, minden más integrált.
OS : Ubuntu 14.04
--
web: lassuviz.blogspot.hu/

  • Oldal:
  • 1