Frage zu Typdeklaration

Forum für alles rund um die MSEide und MSEgui
mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Frage zu Typdeklaration

Beitrag von mse »

fliegermichl hat geschrieben:Kann man in Pascal ein mehrdimensionales Array mit unterschiedlich langen Reihen definieren?

Nur mit dynamischen arrays.
Ich würde eine zentrale Zugriffsfunktion definieren, etwa so:

Code: Alles auswählen

 
type
 dachtypenty =
  (dt_none,
   dtpultdach, dtsatteldach, dtwalmdach, dtkrueppelwalmdach, dtzeltdach,
   dtturm, dtmansarddach1, dtmansarddach2, dtwinkelbau, dt3giebelbau,
   dttbau, dttonnendach, dtrechteckbau, dtlbau, dthbau, dtschleppgaube,
   dtsattelgaube, dtwalmgaube,
   dtkrueppelwalmgaube, dtspitzgaube, dttrapezgaube, dttonnengaube,
   dtschweifgaube, dtfledermausgaube, dtkamin, dtdachfenster
  );
 steildachtypen = dtpultdach..dttonnendach;
 flachdachtypen = dtrechteckbau..dthbau;
 gaubentypen = dtschleppgaube..dtfledermausgaube;
 
 dachgruppenty = (dg_steildach,dg_flachdach,dg_gauben);
 gruppeninfoty = record
  first,last: dachtypenty;
 end;
 
const
 gruppeninfo: array[dachgruppenty] of gruppeninfoty =
  ((first: low(steildachtypen); last: high(steildachtypen)),
   (first: low(flachdachtypen); last: high(flachdachtypen)),
   (first: low(gaubentypen); last: high(gaubentypen))
  );
 
function getdachtyp(const gruppe: int32; item: int32): dachtypenty;
                                //zero based values
begin
 result:= dt_none;
 if (gruppe >= ord(low(dachgruppenty))) and
                           (gruppe <= ord(high(dachgruppenty))) then begin
  with gruppeninfo[dachgruppenty(gruppe)] do begin
   item:= item + ord(first);
   if (item >= ord(first)) and (item <= ord(last)) then begin
    result:= dachtypenty(item);
   end;
  end;
 end;
end;
 

(ungeprüft!).

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Frage zu Typdeklaration

Beitrag von fliegermichl »

Ja Danke so geht es. Aber ganz schön umständlich im Vergleich zu der PHP Version.

Antworten