EDIT<<<: Problem rozwiązałem we własnym zakresie - przyczyną było niezamknięcie pliku po odczytaniu zeń rekordów. Temat do zamknięcia

Witam i proszę o pomoc :)
Napisałem funkcję (w DLL) ,która ma zwracać w postaci ShortStringa efekt porównania pola "cena" z tablicy rekordów.

function Fcena(F: array of fabryka;x:Integer): ShortString;stdcall;
var
z:integer;
y:integer;
temp:fabryka;
wynik:ShortString;
w:integer;
begin
 for z:=Low(F) to high(F) do
  begin
   for y:=Low(F) to (high(F)-1) do
    if (F[y].mebel[x].cena>F[y+1].mebel[x].cena) then
     begin
      temp:=F[y];
      F[y]:=F[y+1];
      F[y+1]:=temp;
     end;
    end;
 wynik:=IntToStr(F[1].mebel[x].cena) +'zl z fabryk(-i)';
 w:=F[1].mebel[x].cena;
 for z:=1 to high(F) do
  begin
   for y:=low(F) to (high(F)-1) do
    if (F[y].miasto>F[y+1].miasto) then
     begin
      temp:=F[y];
      F[y]:=F[y+1];
      F[y+1]:=temp;
     end;
    end;

 for z:=low(F) to high(F) do if (F[z].mebel[x].cena=w) then
  begin
   case F[z].miasto of
   0: wynik:=wynik+IntToStr(F[z].numer)+'. - Baden,';
   1: wynik:=wynik+IntToStr(F[z].numer)+'. - Brenna,';
   2: wynik:=wynik+IntToStr(F[z].numer)+'. - Getynga,';
   3: wynik:=wynik+IntToStr(F[z].numer)+'. - Ilmenau,';
   4: wynik:=wynik+IntToStr(F[z].numer)+'. - Pankow,';
   5: wynik:=wynik+IntToStr(F[z].numer)+'. - Rawenna,';
   6: wynik:=wynik+IntToStr(F[z].numer)+'. - Rostock,';
  end;
Fcena :=wynik;
end;
end;

Jak widać są bąbelki, może i dałoby się zrobić to wydajniej niemniej jednak nie w tym rzecz.
Problemem jest to że wyniki działania funkcji wskazują że wszystkie pola typu Integer mają wartość '0' (tzn. najnizsza cena wynosi zero i jest ona w każdym z 15 rekordów oraz 15 razy wyświetla się 'Baden').Natomiast na pewno żadne z nich nie miało takiej wartości w programie głównym, więc coś nie gra z dll. Proszę o pomoc i jako ułatwienia zamieszczam typ rekordów.

dane_mebla = record
      ilosc     : Integer;
      czas_ocz  : integer;
      cena      : integer;
      end;
fabryka = record
      mebel : array [0..9] of dane_mebla; //stol , krzeslo , wypoczynki , wyp_rattan , kuchnia , fotel , lozko , szafa , meble_laz , wersalka
      czas_dojazdu: array [0..6] of integer; //Baden ,Brenna, Getynga , Ilmenau , Pankow , Rawenna , Rostock
      czas_realizacji:Integer;
      miasto:integer;
      numer:integer;
      end;
</delphi>