[Pascal]Porównywanie tablic zapisanych na liście

Witam

Potrzebuję zbudować tablicę dwuwymiarową 1000 000 000 na 10 elementów. Oczywiście kompilator wywalił błąd “data segment too large” .Do tego celu będzie nawet lepsza lista bo będę usuwał elementy że środka. Wiem jak zrobić listę tablic, ale jak porównać elementy jednej tablicy zapisanej na liście z drugą?

p=h

while (i<11) and (takiesame:=true) do

h^.t_=p^.t_ then takiesame:=true

else takiesame:=false;

A nawet jeśli to jest dobrze to musze i tak zrobić pętlę for od 1 do 10 000 000 000 a integer nie obejmuje takiego zakresu. Jak to zrobić

Coś takiego? Prosze o odpowiedź.

Ja bym proponował albo użyć normalniejszej technologii albo bardziej zastanowić się nad problemem.

Po co Ci taka tablica?

Muszę wygenerować, zapisać gdzieś i później porównywać kilka miliardów ciągów stopni wierzchołków grafu.

Nie da rady użyć tablicy wskaźników do tablic?

Typ Int64 (jakieś 2^63 (~=10^18) w dwie strony) albo zagnieżdżone FOR.

Już zrobiłem zagnieżdzony for, a int64 wywala błądw dev-pas i free pascal. Nie wiem o co mu chodzi.

$ cat testInt64.pas

PROGRAM testInt64;

VAR

    i : Int64;


BEGIN

    i := 12456734633;

    WriteLn(i);

    ReadLn();

END.

$ fpc testInt64.pas 

Free Pascal Compiler version 2.2.2 [2008/11/07] for i386

Copyright (c) 1993-2008 by Florian Klaempfl

Target OS: Linux for i386

Compiling testInt64.pas

Linking testInt64

9 lines compiled, 0.1 sec 

$ ./testInt64 

12456734633

Skoro działa pod Linuksem, pod Windowsem też musi.

A może tworzył byś 2 pliki, w których przechowywał byś elementy tablicy jednej i drugiej, a potem porównywać odczytując …

A może użyłbyś longit?

Ogólnie nie wiem dlaczego ale w moim dev-pas integer i longint mają taki sam zakres wart :? . A problem rozwiązałem stosując listę tablic

Integer może przedstawiać LongInt lub SmallInt, albo nawet Int64, zależnie od implementacji i opcji. Zazwyczaj jest traktowany jak SmallInt, ale nie zawsze. Dlatego ja np. kiedy chcę 2-bajtową zmienną, używam SmallInt.