![]() |
Resource vorhanden??
Moin Moin! Ich bin dabei ein Spiel zu coden, wo ich relativ viele BMPs, JPGs... als *.RES einbinde. Nun hab ich das Porblem, dass ich bei verschiedenen Animationen nicht weiss wie viele bilder es sind. Das einfachste wäre es, wenn ich eine Function hätte die mir true liefert, wenn eine Resource (identifiziert durch einen string) vorhanden (also eingebunden) ist. die function sieht unbgefähr so aus:
Delphi-Quellcode:
Seit ich allderdings Delphi7 hab, krieg ich fehlermeldungen wie "Resource nicht vorhanden". Toll. Genau das will ich ja überprüfen!
function ResExists(s : string): boolean;
var R: TResourceStream; begin result := true; try r.Create(..., s, ...); // weiss ich aus dem kopf nich mehr r.free; except result := true; end; end; Weiss jmd, wie ich diese Problem lösen kann? Vielleicht is es ja nur ein Compilerschalter oder so... :?: Bin für jede Hilfe dankbar!! |
Re: Resource vorhanden??
hi,
vielleicht so .. ungetestet, da nur überflogen
Delphi-Quellcode:
var
R: TResourceStream; begin result := true; try try r.Create() finally r.free end except result := false end |
Re: Resource vorhanden??
Moin MadBrain,
Zitat:
Dann hättest Du nämlich schlicht vergessen bei "Tools\Debugger Optionen\Sprach-Exceptions\Bei Delphi-Exceptions stoppen" den Haken wegzunehmen. Kann sein, dass dieser Menüpunkt bei D7 an anderer Stelle zu finden ist. Dein Code enthält allerdings einen massiven Fehler: Wenn Create fehlschlägt, wird Free nicht mehr ausgeführt. chris' Struktur ist da besser. Den Fehler mit try/except abzufangen finde ich allerdings nicht besonders gut. Erstell Dir doch lieber einen eigenen Resourcentyp, der die Anzahl enthält, oder benutze die API Funktionen für Resourcen. |
Re: Resource vorhanden??
Moin!
erstmal danke für die Hilfe, aber leider liegt das Problem woanders. Der Fehler kommt auch, wenn man die EXE startet. Zitat:
hab mir mal die delphi hilfe von TResourceStream angeschaut aber irgendwie nix gefunden. Zitat:
der Code war nur so aus dem Kopf, deswegen hab ich try-finally weggelassen. :angle2: PS: hab mich so lang nich gemldet, weil ich zu Hause kein internet hab |
Re: Resource vorhanden??
FindResource() oder du pruefst das Handle welches LoadBitmap() oder LoadIcon() zurueckgeben. Bei NULL kannste davon ausgehen, dass es nicht existiert!
|
Re: Resource vorhanden??
Danke! Werd ich gleich mal testen! :coder:
Verstehe aber nicht warum bei solchen Funktionen die Delphi-Hilfe versagt... |
Re: Resource vorhanden??
Weil es Win32 API-Funktionen sind. Die gehoeren eben nicht zu Delphi ;)
Dafuer braucht man das PSDK. |
Re: Resource vorhanden??
hab das jetzt mal folgendermaßen umgesetzt:
Delphi-Quellcode:
das funzt auch einwandfrei. :spin:
function ResourceExists(const s : string; RC : PChar) : boolean;
var text : string; begin result := FindResource(0, PChar(s), RC) <> 0; end; wäre nur mal interessant zu wissen, wofür der erste Parameter gut ist :?: |
Re: Resource vorhanden??
Delphi-Quellcode:
Wie man sieht gibt man im ersten Param das Modul bzw. die Instance, in der die Resource gesucht bzw. aus der geladen werden soll, an.
var
Module: THandle; begin Module := LoadLibrary('Shell32.dll', LOAD_LIBRARY_ASDATAFILE); if Module <> 0 then try FindResource(Module, ....); finally FreeLibrary(Module); end; end; Du solltest entweder dort HInstance oder MainInstance angeben, und nicht 0. Gruß Hagen |
Re: Resource vorhanden??
Danke, werd ich gleich umsetzten.
Allerdings hat LoadLibrary bei mir nur einen Parameter :?: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz