Elsőre azt mondanám, hogy az Integer típus mérete okozhatja a problémát, mely nem minden fordító üzemmódban ugyanaz. Az alapértelmezett (FPC) módban az Integer típus mérete 16bit, míg az ObjFPC és Delphi módokban 32bit. Lásd: Predefined integer types
Próbáld úgy fordítani a programodat, hogy az egyszerű Integer helyett SmallInt vagy LongInt típust használsz. Szintén segíthet a {$MODE xxxx} direktíva megfelelő paraméterrel történő használata a forráskód elején.
A programot alapból {$MODE ObjFPC}{H+} kapcsolókkal készítettem, így az
Integer típust alapból
LongInt-ként kezeli a fordító. Átalakítottam a szükséges dolgokat, hogy {$MODE FPC} kapcsolóval elinduljon a progi, de ez sem hozott eredményt. A Delphi mód eleve kizárva, mivel pont a Delphi-vel való kompatibilitási változtatások (FPC 2.6.4 -> 3.0.0) okozzák a gondomat.
Magyar ékezetes betűk szerepeltek a string-ben? A karakterek különböző kódolásai a freepascal verzióváltásnál okozhat meglepetéseket. A régi Ansi-ként menthette le, az új meg UTF8-ként próbálná értelmezni, és ez pl. magyar ékezetes karakterek esetén nem lesz sikeres. Ha ez a helyzet, akkor WinCPToUTF8 függvénnyel lehetne egyszer átkonvertálni a fájl string tartalmát magyar Ansi-ről UTF8-ra.
Egy esetben jelentkezett ez a probléma, amikor
MessageBox függvényt használok. WinCPToUTF8 függvényt nekem nem talált a fordító. Nem nagy gond,
MessageBox helyett
QuestionDlg tökéletesen működik.