Kezdőoldal » Számítástechnika » Programozás » Free Pascal esetén van valamil...

Free Pascal esetén van valamilyen limit amíg a fájlkezelési parancsok működnek? Fura probléma (bővebben lent)

Figyelt kérdés

Debian Jessie 64 bit alatt Free Pascal 2.6.4 hibát jelez és az alábbi kód kiakad, de Windows 7 32 bit alatt ugyancsak FPC 2.6.4 esetén rendben lefut és végrehajtódik.

Linux alatt a jelenség már egy olyan fájl esetén is tapasztalható, amely nagyobb mint 3 GB.

AssignFile használata assign helyett nem segít, mert valamiért ezt a parancsot nem ismeri...


A hiba amit kiad a kód:

An unhandled exception occurred at $00000000004002CA :

EPrivilege : Privileged instruction

$00000000004002CA



{$MODE OBJFPC} {$H+}

uses dos,sysutils;

var

f:file of byte;

meret:int64;

begin

assign(f,paramstr(1));

reset(f);

meret:=filesize(f);

meret:=meret-3456789;

seek(f,meret);

truncate(f);

close(f);

end.

Mi lehet ez?



2015. máj. 16. 14:50
1 2
 1/15 A kérdező kommentje:
néha a seek parancsnál nem dob hibát, csak a truncate-nél, de van hogy a seek sem működik.
2015. máj. 16. 14:56
 2/15 anonim ***** válasza:
45%
Mi a fene az a meret-3456789?
2015. máj. 16. 15:31
Hasznos számodra ez a válasz?
 3/15 SimkoL ***** válasza:
Nem a file mérettel van gond, hanem privilegizált utasítást akarsz végrehajtani - le akarsz vágni a file-ból - mezei felhasználóként. Azért én az dos-t kihagynám az unitok közül .
2015. máj. 16. 15:34
Hasznos számodra ez a válasz?
 4/15 ejbenjaro ***** válasza:
Aztán Linux alatt van e jogosultságod a a fájlt szerkeszteni?
2015. máj. 16. 15:38
Hasznos számodra ez a válasz?
 5/15 SimkoL ***** válasza:

Mondjuk azért egy méret ellenőrzés sem lenne megvetendő gondolat.

Off: Géza te bűvészkedel már megint ?

2015. máj. 16. 15:39
Hasznos számodra ez a válasz?
 6/15 A kérdező kommentje:

Először nem írtam be hogy uses dos; Linux alatt igen picit fura. :-)

A meret által lekért fájlméret mindig tökéletes volt.

Aki azt írta, hogy mi a fene az a meret - ... az ne írjon, mert nem tudja értelmezni a kódot, valószínűleg az a 63%-os, aki örökösen értelmetlenségeket írkál a kérdésekhez.

SimkoL: nahát, már megismersz? :D

2015. máj. 16. 16:49
 7/15 A kérdező kommentje:
Teljes jogosultságom van a fájlt szerkeszteni, root vagyok (a saját gépemen), írni, olvasni tudom, csak ez a seek és truncate nem akar menni...
2015. máj. 16. 16:50
 8/15 SimkoL ***** válasza:

Fordít és futtat gomb gondolom. Akkor nincs mivel az FP futtat egy programot és nem biztos, hogy örökölt jogot az új program. Próbáld csak külön a lefordítottad futtatni, ne FP alól.

Off: Neked vannak ilyen 'érdekes' kérdéseid :)

2015. máj. 16. 17:30
Hasznos számodra ez a válasz?
 9/15 ejbenjaro ***** válasza:

Fájlméret probléma lesz a hibaüzenet oka. Ha a méret negatív szám, akkor kapod a fenti hibaüzenetet. Tehát a #2 válaszadó jóra gyanakodott. Ellenőrizni kell, hogy a méret, ahova seek-elsz, nem negatív szám-e.

Próbáld így a kódot:


program fajlvag;

{$mode objfpc} {$H+}

uses SysUtils;

var

f:file of byte;

meret:int64;


begin

assign(f,paramstr(1));

reset(f);

meret:=filesize(f);

meret:=meret-3456789;

if meret>0 then

begin

seek(f,meret);

truncate(f);

writeln('A fajl, ',paramstr(1),' vagasa sikerult!')

end else writeln('A fajl, ',paramstr(1),' vagasa NEM sikerult!');

close(f);

end.

2015. máj. 16. 17:40
Hasznos számodra ez a válasz?
 10/15 A kérdező kommentje:

A programot a következőképp fordítottam:

fpc fajlvag.pas


A kódon csak annyit változtattam, hogy írja ki a fájlméreteket, két writeln berakása, semmi más.


Az eredmény:

A lekért fájl mérete: 3447754987

Az új fájlméret a csökkentés után: 3444298198

An unhandled exception occurred at $0000000000400375 :

EPrivilege : Privileged instruction

$0000000000400375

Egyéb tipp?

2015. máj. 16. 18:16
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!