Poslední příspěvky

Stran: [1] 2 3 ... 10
1
Obecné / Re:DLL - tabuľky v nej či v DB
« Poslední příspěvek od pf1957 kdy Dnes v 12:56:37 »
Našiel som dve veci:
Kód: [Vybrat]
type
  TData = array of integer;
  PData = ^TData;
Ano, tohle je princip, ktery musis uplatnit, ale a) tohle je dynamicke pole, staticka definice je primo v Delphi TIntegerArray a mozna jeste nejaka dalsi b) pro vicerozmerne pole si budes muset zahrat na prekladac a adresu prvku pole vypocitat a jeho hodnotu pres pointer ziskat.

Citace
  TMyArray = Array[1..30] Of SomeThing;
Procedure DoStuff(Var AnArray : TMyArray);
Tohle je k nicemu, to se jen zbavuje PData z predchoziho. A misto var se da pouzit const.

Kdyz vezmu to pole z predchozi odpovedi:
Kód: Delphi [Vybrat]
  1. const
  2.   A: Array [1 .. 2, 1 .. 5] of real = (
  3.     (1.1, 1.2, 1.3, 1.4, 1.5),
  4.     (2.1, 2.2, 2.3, 2.4, 2.5)
  5.   );
  6.  
tak si muzu nadefinovat pointer na dummy pole (jeho pouziti vyzaduje vypnuti range checkingu) jinak bys musel pouzit pro horni hranici kazdeho rozmeru pole nejake velke konstanty, ktere v danem pripade prakticky nemuzes prekrocit):
Kód: Delphi [Vybrat]
  1. type
  2.   TRealArray = array [0..0] of real;
  3.   PRealArray = ^TRealArray;
  4.  

A pak treba funkce, ktera pristupuje k hodnote v poli:

Kód: Delphi [Vybrat]
  1. {$R-}// Nejdriv by mel schovat puvodni stav direktivy
  2. function TForm1.GetDim2RealValue(ARealArray: PRealArray;
  3.   ARowLow, ARowHigh, AColLow, AColHigh: integer; ARowIdx, AColIdx: integer): real;
  4. var
  5.   pCols: PRealArray;
  6.   pCell: PRealArray;
  7. begin
  8.   pCols := PRealArray(addr(ARealArray[(ARowIdx - ARowLow) *
  9.     (AColHigh - AColLow + 1)]));
  10.   pCell := addr(pCols^[AColIdx - AColLow]);
  11.   result := pCell^[0];
  12. end;
  13. {$R+}//mel by obnovit puvodni stav pred $R-, nevim, jestli uz Delphi umi zapamatovat/obnovit stav direktivy
  14.  

A nakonec pouziti:
Kód: Delphi [Vybrat]
  1. var
  2.   r: real;
  3. ...
  4.   r := GetDim2RealValue(addr(A), low(A), high(A), low(A[low(A)]), high(A[low(A)]), 2, 3);
  5.  

Na tomhle pripadu je videt, proc se ve vetsine jazyku natvrdo indexuji pole od nuly, coz muzes samorejme taky udelat. 
2
Obecné / Re:DLL - tabuľky v nej či v DB
« Poslední příspěvek od Stanislav Hruška kdy Dnes v 10:48:29 »
Našiel som dve veci:
Kód: [Vybrat]
type
  TData = array of integer;
  PData = ^TData;
.
procedure IncArray(data: PData);
var i : integer;
begin
  for i := Low(data^) to High(data^) do
    data^[i] := data^[i] + 5;
end;
.
Type
  TMyArray = Array[1..30] Of SomeThing;
Procedure DoStuff(Var AnArray : TMyArray);
Begin
  {whatever}
End;
Prvé si musím vyskúšať či to je vôbec vhodné riešenie pre dvojrozmerné pole.
Druhé riešenie vyzerá (pre mňa) lepšie. Akurát
  • nebudem mať polia ako konštanty a
  • hneď pri definícii priradím aj obsah poľa
3
Obecné / Re:DLL - tabuľky v nej či v DB
« Poslední příspěvek od Stanislav Hruška kdy Dnes v 10:14:26 »

Mám funkciu, ktorej potrebujem odovzdať pole. Jeden zo spôsobov je definovať type. Problém je v počte polí. Polí je 127, druhov (iná veľkosť) asi 25.
To je priveľa na také riešenie.
Exituje nejaké iné univerzálne riešenie? Tu som k tomu našiel dva návrhy:
Citace
Udelej si pole jako typ, ktery dana fce vraci nebo predavej pole odkazem do fce.
Neviem ako sa realizuje riešenie s odkazom.
.
Možno by sa toto dalo aplikovať. Pri rýchlom prečítaní to neviem posúdiť:
#8
https://forum.delphi.cz/index.php/topic,10364.msg60157.html#msg60157
Idem sa medzitým pozrieť na cudzojazyčné weby.

4
Obecné / Re:DLL - tabuľky v nej či v DB
« Poslední příspěvek od Stanislav Hruška kdy 21-01-2022, 09:15:03 »
Ďakujem. Ja som si to našiel, ale ušetril si mi čas presnou definíciou.
Takto definované polia majú veľkú výhodu. Čitateľnosť. Môžem si zarovnať jednotlivé členy do stĺpcov. Čo je pri stringu je problém.
5
Obecné / Re:DLL - tabuľky v nej či v DB
« Poslední příspěvek od pf1957 kdy 20-01-2022, 22:52:57 »
Kód: Delphi [Vybrat]
  1.       A: Array[1..2, 1..5] of real = (
  2.         (1.1, 1.2, 1.3, 1.4, 1.5),
  3.         (2.1, 2.2, 2.3, 2.4, 2.5)
  4.         // ...
  5.         // ...
  6.       );
  7.  
6
Obecné / Re:DLL - tabuľky v nej či v DB
« Poslední příspěvek od Stanislav Hruška kdy 20-01-2022, 21:04:19 »
Citace
muzes si to zapsat treba jakou inicializovanou konstantu typu pole.
To ma oslovuje najviac. Už si len naštudovať ako to je s dvojrozmerným poľom :) .
7
Obecné / Re:DLL - tabuľky v nej či v DB
« Poslední příspěvek od Stanislav Hruška kdy 20-01-2022, 19:16:05 »
Tie reťazce vyzerajú takto:
Kód: Delphi [Vybrat]
  1. s := '0.005;0.018;0.024a;0.010;0.036;0.044a;0.015;0.053;0.062a;0.020;0.067;0.080a;'
  2. +'0.025;0.082;0.095a;0.030;0.095;0.111a;0.040;0.120;0.138a;0.050;0.142;0.162a;'
  3. +'0.060;0.162;0.180a;0.070;0.176;0.193a;0.080;0.187;0.204a;0.090;0.198;0.213a;'
  4. +'0.100;0.207;0.222a;0.120;0.220;0.235a;0.140;0.233;0.247a;0.160;0.242;0.256a;'
  5. +'0.180;0.251;0.265a;0.200;0.258;0.271a;0.250;0.273;0.273a;0.300;0.273;0.273a;'
  6. +'0.350;0.273;0.273a';
To "a" znamená koniec riadka. To je jedna z vecí čo sa mi nepáči. Pri výpočte ten reťazec natiahnem do dvojrozmerného poľa. Tak sa mi ľahšie robí lineárna interpolácia.  Najprv ju robím v jednom smere (vodorovne) a potom v druhom (zvisle). To sa ľahko realizuje pomocou indexov buniek.
Citace
Osobne nemam rad DB, takze bych zustal u DLL (proc tahat do aplikace dalsi balast, kdyz ho jinak (?) k nicemu nepotrebuju)
Aj to bol dôvod na DLL.
8
Obecné / Re:DLL - tabuľky v nej či v DB
« Poslední příspěvek od pf1957 kdy 20-01-2022, 18:47:12 »
2 - Ako som písal, v textovej podobe sa to ťažko udržiava. Ale asi to  je lepšie než v DLL. Zvážim túto možnosť
No nevim: myslis, ze se prosty seznam hodnot se bude udrzovat hur nez seznam hodnot v klauzuli VALUES(....)? IMHO to bude s tim SQL spis horsi, nehlede na to, ze je jen na tobe, jak preprasis data z nejakych (asi tistenych) norem do strojove reprezentace: muzes si to zapsat treba jakou inicializovanou konstantu typu pole.

Osobne nemam rad DB, takze bych zustal u DLL (proc tahat do aplikace dalsi balast, kdyz ho jinak (?) k nicemu nepotrebuju)
9
Obecné / Re:DLL - tabuľky v nej či v DB
« Poslední příspěvek od Stanislav Hruška kdy 20-01-2022, 16:28:00 »
To je v poriadku. Veď som odpísal, že tú možnosť zvážim (2) ;)
10
Obecné / Re:DLL - tabuľky v nej či v DB
« Poslední příspěvek od Radek Červinka kdy 20-01-2022, 15:58:42 »
Psal jsi "Čo tabuľka, to jeden string", z toho jsem vychazel ze to muzes dat do souboru.
Stran: [1] 2 3 ... 10