🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi
Article #346885

Re: Odczyt tablicy z DLL

#346885
From: zpksoft
Date: Wed, 28 Nov 2018 08:29
53 lines
3059 bytes
W dniu wtorek, 27 listopada 2018 20:08:56 UTC+1 użytkownik Pancio napisał:
> Witam,
> Mam pewien problem i z wielka nadzieja pisze ten post, bo moze ktos moglby mi pomoc.
> Mam do napisania mini gre w ktorej jedna plansza ma wymiar 20x20. Utworzylem plik z planszami i wszystko bylo w porzadku, dopoki plansze wczytywalem w ten sposob:
> 
> type
>   Poziom = record
>              Plansza : array[1..20] of string[20];
>            end;
> 
> var
>   f : file;
>   p : Poziom;
> begin
>   AssignFile(f, 'nazwa pliku');
>   Reset(f, SizeOf(p));
>   Seek(f, nr_planszy);
>   BlockRead(f, p, 1);
>   CloseFile(f);
> end;
> 
> Teraz jednak mam potrzebe, aby plik z planszami umiescic w wiekszym pliku z innymi zasobami DLL. No i tutaj pojawia sie problem z odczytem, bo dziala on jedynie w przypadku pierwszej planszy. Innych za diabla nie moge wczytac. Robie to tak:
> 
> var H : THandle;
>     Stream : TResourceStream;
>     mStream : TMemoryStream;
> begin
>   H := LoadLibrary('nazwa_pliku_z_zasobami.dll');
>   mStream := TMemoryStream.Create;
>   try
>     Stream := TResourceStream.Create(H, 'PLANSZE', RT_RCDATA);
>     mStream.LoadFromStream(Stream);
>     mStream.Seek(SizeOf(Poziom), 0);
>     mStream.ReadBuffer(p, SizeOf(Poziom));
>     Stream.Free;
>   finally
>     mStream.Free;
>     FreeLibrary(H);
>   end;
> end;
> 
> Czy moge prosic "ludzi dobrej woli" o pomoc i podpowiedz, co mam poprawic w kodzie. Wedlug mnie problem lezy w procedurze Seek, ale nie wiem, jak ustawic kursor, aby poprzez ReadBuffer wczytaj N-ty poziom gry.
> 
> --
> Pancio

To chyba powinno być jakoś tak:

mStream.Seek(SizeOf(Poziom)*(nrPlanszy-1), soFromBeginning);

Jeśli numerujesz plansze od 0 to bez -1

Paweł
Technical Details
Message-ID: <bfb70afb-814b-4998-8e67-e13691414364@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!weretis.net!feeder4.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.166.215.MISMATCH!k10no32704itk.0!news-out.google.com!v141ni63ita.0!nntp.google.com!k10no32701itk.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <c81d1cc2-3211-4e6e-b657-6051d1a19259@googlegroups.com>

Show Full Headers
Complete Article Headers
X-Received: by 2002:a5d:84d5:: with SMTP id z21mr2952874ior.24.1543393770646;        Wed, 28 Nov 2018 00:29:30 -0800 (PST)
X-Received: by 2002:aca:4c97:: with SMTP id z145mr62437oia.2.1543393770340; Wed, 28 Nov 2018 00:29:30 -0800 (PST)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!weretis.net!feeder4.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.166.215.MISMATCH!k10no32704itk.0!news-out.google.com!v141ni63ita.0!nntp.google.com!k10no32701itk.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.delphi
Date: Wed, 28 Nov 2018 00:29:29 -0800 (PST)
In-Reply-To: <c81d1cc2-3211-4e6e-b657-6051d1a19259@googlegroups.com>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=217.99.242.251; posting-account=8ND_mgoAAAD5J9y9fnaTB1Kcu7xKWk7Q
NNTP-Posting-Host: 217.99.242.251
References: <c81d1cc2-3211-4e6e-b657-6051d1a19259@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <bfb70afb-814b-4998-8e67-e13691414364@googlegroups.com>
Subject: Re: Odczyt tablicy z DLL
From: zpksoft <zpksoft@op.pl>
Injection-Date: Wed, 28 Nov 2018 08:29:30 +0000
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit