Autor Téma: const vícerozměrné pole stringů?  (Přečteno 2636 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6147
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:const vícerozměrné pole stringů?
« Odpověď #30 kdy: 05-07-2018, 13:56:11 »
Ten record môžeš celý vložiť do triedy. Musí byť definovaný pred triedou.
Ja mám pocit, že na to ideš celkovo zle. Ale nemám s tým žiadne skúsenosti. Odporúčam Ti celý problém najprv napísať v pseudokóde. Podľa všetkého to máš len v hlave. Tým pádom Ti unikajú rôzne súvislosti.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline vangog

  • Hrdina
  • ****
  • Příspěvků: 381
  • Karma: 0
    • Verze Delphi: 7
Re:const vícerozměrné pole stringů?
« Odpověď #31 kdy: 05-07-2018, 14:00:30 »
Do třídy record sice vložit mohu, ale const tam vložit nemohu  :'( Tudíž i když ho tam vložím je to celé naprd. Do pole se to vložit nedá, když je každá konstanta jiný rozměr pole a defacto jiný typ.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6147
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:const vícerozměrné pole stringů?
« Odpověď #32 kdy: 05-07-2018, 14:04:05 »
Hm, prečo to musí byť konštanta?
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline vangog

  • Hrdina
  • ****
  • Příspěvků: 381
  • Karma: 0
    • Verze Delphi: 7
Re:const vícerozměrné pole stringů?
« Odpověď #33 kdy: 05-07-2018, 14:24:22 »
Nemusí, ale na nic jiného jsem nepřišel. Byl bych ale radši kdybych kvůli tomu nemusel vytvářet instanci. Prostě doporuč mi nějakej wrapper, přes který se dostanu ke všem hodnotám.

Co se týče načítání ze souboru - já zase nechci aby to někdo svévolně měnil. To kompilování mi vyhovuje.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6147
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:const vícerozměrné pole stringů?
« Odpověď #34 kdy: 05-07-2018, 14:35:21 »

Citace
Byl bych ale radši kdybych kvůli tomu nemusel vytvářet instanci.
Čo je zlé na vytvorení inštancie? Ak nevytvoríš inštanciu, tak musíš vytvoriť čosi iné.
Citace
Prostě doporuč mi nějakej wrapper, přes který se dostanu ke všem hodnotám.
To nemôžem. Je to mimo mňa.
............
Tu je môj pseudokód:
Mám slovíčko a poznám jazyk z ktorého pochádza.
Požiadam svoju triedu o vrátenie triedy pre daný jazyk.
Tejto triede odovzdám dané slovo.
V triede na základe prvého písmena slova si vyžiadam zoznam predpôn/prípon.
Ten môže byť definovaný ako StringList.
Prechádzam jednotlivé položky v StringList a pomocou funkcií pre prácu so stringmi zistím, či ho dané slovo obsahuje.
Vrátim si výsledok vyhľadávania.
.......
Netuším aké rýchle to bude. Prácu s buffer-om, pointer-om a podobné veci, na rozdiel od Teba, vôbec neovládam.
Ale vďaka pseudokódu viem čo chcem a ako sa to dá urobiť.
............
Snáď Ti to pomôže. Ale tým končím.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline vangog

  • Hrdina
  • ****
  • Příspěvků: 381
  • Karma: 0
    • Verze Delphi: 7
Re:const vícerozměrné pole stringů?
« Odpověď #35 kdy: 05-07-2018, 15:03:05 »
Asi jsem to vyřešil:

Kód: Delphi [Vybrat]
  1. unit Prefixes;
  2.  
  3. interface
  4.  
  5.   type TEnArr = record
  6.         D: array[0..1] of string;
  7.         E: array[0..0] of string;
  8.         F: array[0..0] of string;
  9.         I: array[0..1] of string;
  10.         O: array[0..1] of string;
  11.         P: array[0..10] of string;
  12.         Q: array[0..0] of string;
  13.         R: array[0..0] of string;
  14.         S: array[0..7] of string;
  15.         T: array[0..5] of string;
  16.         U: array[0..3] of string;
  17.         W: array[0..1] of string;
  18.     end;
  19.   type TCzArr = record
  20.         B: array[0..1] of string;
  21.         D: array[0..0] of string;
  22.         N: array[0..4] of string;
  23.         O: array[0..4] of string;
  24.         P: array[0..8] of string;
  25.         R: array[0..1] of string;
  26.         S: array[0..2] of string;
  27.         T: array[0..5] of string;
  28.         U: array[0..1] of string;
  29.         V: array[0..1] of string;
  30.         Z: array[0..2] of string;
  31.     end;  type TPrefixWrapper = record
  32.       en: TEnArr;
  33.       cz: TCzArr;
  34.     end;
  35.  
  36.     const prefix_EN: TPrefixWrapper =
  37.       ( en: ( D: ( 'de','dis' );
  38.               E: ('ex');
  39.               F: ('for');
  40.               I: ('im','in');
  41.               O: ('over','out');
  42.               P: ('para','part','peri','per','pass','ph','poly','posl','pre','pro','put');
  43.               Q: ('qu');
  44.               R: ('re');
  45.               S: ('self','set','sit','sh','sub','sur','super','sol');
  46.               T: ('take','th','touch','tran','tri','turn');
  47.               U: ('under','uni','un','up');
  48.               W: ('wh','work')
  49.             ); // END en
  50.        cz: (  B: ( 'beze','bez' );
  51.               D: ('do');
  52.               N: ('nade','nad','na','ne','ná');
  53.               O: ('ode','od','obe','ob','o');
  54.               P: ('pode','pro','pod','pos','při','přede','před','pře','po');
  55.               R: ('roze','roz');
  56.               S: ('sou','se','s');
  57.               U: ('u','ú');
  58.               V: ('vy','v');
  59.               Z: ('za','ze','z');
  60.             ); // END cz
  61.       ); // END wrapper
  62.  
  63.     implementation
  64.  
  65. end.
  66.  
  67.  
« Poslední změna: 05-07-2018, 15:17:10 od vangog »