AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Resource vorhanden??
Thema durchsuchen
Ansicht
Themen-Optionen

Resource vorhanden??

Ein Thema von madbrain · begonnen am 9. Aug 2003 · letzter Beitrag vom 12. Aug 2003
Antwort Antwort
Seite 1 von 2  1 2      
madbrain

Registriert seit: 9. Aug 2003
Ort: an der Elbe
20 Beiträge
 
Delphi 7 Enterprise
 
#1

Resource vorhanden??

  Alt 9. Aug 2003, 13:09

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:
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;
Seit ich allderdings Delphi7 hab, krieg ich fehlermeldungen wie "Resource nicht vorhanden". Toll. Genau das will ich ja überprüfen!

Weiss jmd, wie ich diese Problem lösen kann?
Vielleicht is es ja nur ein Compilerschalter oder so...

Bin für jede Hilfe dankbar!!
  Mit Zitat antworten Zitat
chris

Registriert seit: 24. Mai 2003
Ort: Düsseldorf
196 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Resource vorhanden??

  Alt 9. Aug 2003, 14:57
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
Chris
D2009.4 | Vista SP2 x32
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Resource vorhanden??

  Alt 9. Aug 2003, 15:34
Moin MadBrain,

Zitat von madbrain:
Seit ich allderdings Delphi7 hab, krieg ich fehlermeldungen wie "Resource nicht vorhanden".
kann es sein, dass der Fehler nur beim Start aus der IDE heraus kommt?
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
madbrain

Registriert seit: 9. Aug 2003
Ort: an der Elbe
20 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Resource vorhanden??

  Alt 11. Aug 2003, 17:24
Moin!
erstmal danke für die Hilfe, aber leider liegt das Problem woanders.

Der Fehler kommt auch, wenn man die EXE startet.

Zitat:
oder benutze die API Funktionen für Resourcen.
und wie mach ich das?
hab mir mal die delphi hilfe von TResourceStream angeschaut aber irgendwie nix gefunden.

Zitat:
Erstell Dir doch lieber einen eigenen Resourcentyp, der die Anzahl enthält
genau diese Arbeit wollte ich mir ja vereinfachen!

der Code war nur so aus dem Kopf, deswegen hab ich try-finally weggelassen.

PS: hab mich so lang nich gemldet, weil ich zu Hause kein internet hab
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#5

Re: Resource vorhanden??

  Alt 11. Aug 2003, 17:29
FindResource() oder du pruefst das Handle welches LoadBitmap() oder LoadIcon() zurueckgeben. Bei NULL kannste davon ausgehen, dass es nicht existiert!
  Mit Zitat antworten Zitat
madbrain

Registriert seit: 9. Aug 2003
Ort: an der Elbe
20 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Resource vorhanden??

  Alt 11. Aug 2003, 17:42
Danke! Werd ich gleich mal testen!

Verstehe aber nicht warum bei solchen Funktionen die Delphi-Hilfe versagt...
  Mit Zitat antworten Zitat
Assarbad
(Gast)

n/a Beiträge
 
#7

Re: Resource vorhanden??

  Alt 11. Aug 2003, 18:17
Weil es Win32 API-Funktionen sind. Die gehoeren eben nicht zu Delphi

Dafuer braucht man das PSDK.
  Mit Zitat antworten Zitat
madbrain

Registriert seit: 9. Aug 2003
Ort: an der Elbe
20 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Resource vorhanden??

  Alt 12. Aug 2003, 10:33
hab das jetzt mal folgendermaßen umgesetzt:

Delphi-Quellcode:
function ResourceExists(const s : string; RC : PChar) : boolean;
var
    text : string;
begin
    result := FindResource(0, PChar(s), RC) <> 0;
end;
das funzt auch einwandfrei.

wäre nur mal interessant zu wissen, wofür der erste Parameter gut ist
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#9

Re: Resource vorhanden??

  Alt 12. Aug 2003, 13:33
Delphi-Quellcode:
var
  Module: THandle;
begin
  Module := LoadLibrary('Shell32.dll', LOAD_LIBRARY_ASDATAFILE);
  if Module <> 0 then
  try
    FindResource(Module, ....);
  finally
    FreeLibrary(Module);
  end;
end;
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.

Du solltest entweder dort HInstance oder MainInstance angeben, und nicht 0.

Gruß Hagen
  Mit Zitat antworten Zitat
madbrain

Registriert seit: 9. Aug 2003
Ort: an der Elbe
20 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Resource vorhanden??

  Alt 12. Aug 2003, 17:57
Danke, werd ich gleich umsetzten.

Allerdings hat LoadLibrary bei mir nur einen Parameter
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz