Article View: pl.comp.lang.delphi
Article #346885Re: Odczyt tablicy z DLL
From: zpksoft
Date: Wed, 28 Nov 2018 08:29
Date: Wed, 28 Nov 2018 08:29
53 lines
3059 bytes
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-mailReferences:
<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