Article View: pl.comp.lang.pascal
Article #92792Re: EAccessViolation : Access violation
From: Łukasz 'Maly' Ostrowski
Date: Tue, 27 Jan 2009 15:46
Date: Tue, 27 Jan 2009 15:46
107 lines
3883 bytes
3883 bytes
On Sun, 25 Jan 2009 20:14:06 +0000 (UTC), Mirek wrote:
> On nie, 25 sty 2009 18:00:54 in article news:<6c39f892-946c-47a0-b7a0-d0e30f3d72d5@z6g2000pre.googlegroups.com>
> notaras wrote:
>> An unhandled exception occurred at $08049761 :
>> EAccessViolation :
>> Access violation
>> $08049761
>> $080566B5
>> $080481C2 P$NOS_TEXT_MODE_finalize_implicit,
>> of nos_text_mode.pas
>> $080572B2
>> $08057485
>>
>> nos_types zawiera:
>
> nos_types musi zawierać coś wiecej i tam szukaj błędu
Prawie dobrze Kolega kombinuje ;). Sekcja finalization sprząta
też AnsiStringi, jeżeli do tychże trafia jakieś śmieci, tzn.
do nagłówka, długości, etc, to mogą wyskoczyć podobne krzaczki.
Do orginalnego autora wątku:
1. Upewnij się że nie zapisałeś krzaków do tego pliku config.dat,
musi być tam zserializowana dokładnie ta sama wersja TConfig.
[Binarnie, żadnych plików textowych ;)]
2. Upewnij się że w TConfig i w TUser masz shortstring - jeżeli
jakimś cudem właczysz $mode objfpc i jakimś cudem kompilator
wymyśli żeby tam wsadzić string=AnsiString to będziesz miał
bagno podobne do obecnego, bo do pliku zapiszą się pointery
;).
3. Aczkolwiek nie podejrzewam tego, nie masz w sekcji finzalization
unitu nos_types nic co może się wywalić?
4. SOA#1 u mnie działa po przeklejeniu i po wygenerowaniu pliku
config.dat:
// nos_types.pas
unit nos_types;
{$MODE objfpc}
interface
type
TUser=
record
id:shortstring;
end;
TConfig=
record
ftp_user:shortstring;
ftp_pass:shortstring;
upload_ip:shortstring;
download_url:shortstring;
user:TUser;
end;
implementation
end.
// test.pas
{$MODE objfpc}
uses
nos_types,crt,SysUtils;
var
f:file of TConfig;
temp:TConfig;
temp_boolean:boolean;
temp_char:char;
f2:longint;
begin
{* tym sobie wygenerowałem "napewno poprawny plik"
FillChar(temp, sizeof(temp), #0);
assign(f, 'config.dat');
rewrite(f);
write(f, temp);
close(f);
*}
if FileExists('config.dat') then
begin
assign(f, 'config.dat');
reset(f);
read(f,temp);
close(f);
writeln('dane konfiguracyjne pomyslnie wczytane');
writeln('aaaaaaaa');
end;
writeln('bbbbbbbb');
end.
// -------------------------------------------------------------
/cygdrive/c/dev/fpc/bin/i386-win32$ ./fpc -h | head -2
Free Pascal Compiler version 2.2.0 [2007/09/09] for i386
Copyright (c) 1993-2007 by Florian Klaempfl
// ps. uważaj na warningi:
--
Pozdrawiam,
Łukasz 'Maly' Ostrowski. http://maly.nemo.pl/
ICQ: 148498663 GG: 2544385 AIM: malyzgora
GTalk: l3vi4than@gmail.com ASTRA: L3viathan
Technical Details
Message-ID:
<18jenvva2sy99$.154p58dgtno42.dlg@40tude.net>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!newsfeed.silweb.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mailReferences:
<6c39f892-946c-47a0-b7a0-d0e30f3d72d5@z6g2000pre.googlegroups.com> <glih6e$6t1$1@z-news.pwr.wroc.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!newsfeed.silweb.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail From: Łukasz 'Maly' Ostrowski <maly@USUNnemo.pl> Newsgroups: pl.comp.lang.pascal Subject: Re: EAccessViolation : Access violation Date: Tue, 27 Jan 2009 16:46:30 +0100 Organization: Acme Lines: 107 Message-ID: <18jenvva2sy99$.154p58dgtno42.dlg@40tude.net> References: <6c39f892-946c-47a0-b7a0-d0e30f3d72d5@z6g2000pre.googlegroups.com> <glih6e$6t1$1@z-news.pwr.wroc.pl> NNTP-Posting-Host: static-78-8-208-81.ssp.dialog.net.pl Mime-Version: 1.0 X-Trace: news.dialog.net.pl 1233071356 28541 78.8.208.81 (27 Jan 2009 15:49:16 GMT) X-Complaints-To: abuse@dialog.net.pl NNTP-Posting-Date: Tue, 27 Jan 2009 15:49:16 +0000 (UTC) User-Agent: 40tude_Dialog/2.0.15.1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit