AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Ein Panel an eine Instanz einer Klasse TBall übergeben

Ein Panel an eine Instanz einer Klasse TBall übergeben

Ein Thema von Smiley · begonnen am 9. Mär 2022 · letzter Beitrag vom 11. Mär 2022
Antwort Antwort
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
210 Beiträge
 
Delphi 12 Athens
 
#1

AW: Ein Panel an eine Instanz einer Klasse TBall übergeben

  Alt 11. Mär 2022, 12:30
Ups, die .dll war im .rar mit drin, hatte nur das source Verzeichnis kopiert.
Sorry.
Bekomme jetzt eine Exception aus der api.
Auch wenn ich die gesendete Bounce.exe aus dem .rar File ausführe, das ging vorher aber doch schon mal.
Muss gleich mal meinen PC neustarten, ob es dann wieder geht, der macht wieder mal Windows Updates.
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#2

AW: Ein Panel an eine Instanz einer Klasse TBall übergeben

  Alt 11. Mär 2022, 12:37
Ups, die .dll war im .rar mit drin, hatte nur das source Verzeichnis kopiert.
Sorry.
Bekomme jetzt eine Exception aus der api.
Auch wenn ich die gesendete Bounce.exe aus dem .rar File ausführe, das ging vorher aber doch schon mal.
Muss gleich mal meinen PC neustarten, ob es dann wieder geht, der macht wieder mal Windows Updates.
Du bekommst ein Exception
raise Exception.Create('Skin Config invalid or not available!');
bestimmt deshalb weil du den Ordner für die Ressourcen nicht zu deinem neuen Projekt addiert hast.

Sk_Aero.dll benötigt zum Ausführen die Konfigurationsdatei Bounce.ske (Textdatei) im Skin Ordner.
Dort wird festgelegt welcher Font, Skin, Farben etc.. für das Projekt verwendet werden.
Öffne die einfach mal dann siehst du was ich meine.
Alle Standard Einstellungen für das Fenster werden hier definiert.

Mit Windows Update hat es nichts zu tun.

Geändert von venice2 (11. Mär 2022 um 12:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
210 Beiträge
 
Delphi 12 Athens
 
#3

AW: Ein Panel an eine Instanz einer Klasse TBall übergeben

  Alt 11. Mär 2022, 13:01
Beim compilieren bekomme ich keine Fehler, nur bei der ausführung.
Habe das Skins und SpriteRes Verzeichnis auch noch in das Prjektverz. kopiert und neu kompiliert.
Beim aufrufen der .exe Datei kommt die angehängte Meldung.
Angehängte Grafiken
Dateityp: png Error.PNG (3,1 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#4

AW: Ein Panel an eine Instanz einer Klasse TBall übergeben

  Alt 11. Mär 2022, 13:04
Beim compilieren bekomme ich keine Fehler, nur bei der ausführung.
Habe das Skins und SpriteRes Verzeichnis auch noch in das Prjektverz. kopiert und neu kompiliert.
Beim aufrufen der .exe Datei kommt die angehängte Meldung.
Kannst dein Projekt mal anhängen?
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
210 Beiträge
 
Delphi 12 Athens
 
#5

AW: Ein Panel an eine Instanz einer Klasse TBall übergeben

  Alt 11. Mär 2022, 13:11
Im Skins Ordner ist ein Ordner Blue mit den Bildern und der Bounce.ske Datei.
Habe versucht die .ske in Skins zu legen, kommt aber der gleiche Fehler.
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
210 Beiträge
 
Delphi 12 Athens
 
#6

AW: Ein Panel an eine Instanz einer Klasse TBall übergeben

  Alt 11. Mär 2022, 13:14
Hier mein Project
Angehängte Dateien
Dateityp: rar BounceVenice2.rar (2,04 MB, 2x aufgerufen)
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#7

AW: Ein Panel an eine Instanz einer Klasse TBall übergeben

  Alt 11. Mär 2022, 13:23
Hier mein Project
Wenn du den Pfad zur Konfigurationsdatei inklusive der Ressourcen Ordner falsch angibst wird das nix.
Der Pfad in dem die Exe kompiliert wird ist ..\bin dort müssen die Ordner Skin und SpriteRes enthalten sein inklusive der SK_Aero.dll.

Ist das nicht der fall wird ein exception geworfen beim Debuggen und zwar
raise Exception.Create('Skin Config invalid or not available!');


weil die Konfiguration nicht gefunden wird.
Schau doch einfach mal worauf dieser Pfad zeigt.
Delphi-Quellcode:
      DefSkin := BounceIni.ReadString('SkinPath', 'Skin', ExtractFilePath(ParamStr(0))
          + 'Skins\Blue\Bounce.ske');
EDIT:
Machen wir es einfacher.

lösche das in der uIni!
WriteString('SkinPath', 'Skin', WideString(ExtractFileDir(SKAERO_CONFIG_GetSkinFol der)
+ '\Bounce.ske'));

ändere das in uMain
Delphi-Quellcode:
      InitPath;
      DefSkin := BounceIni.ReadString('SkinPath', 'Skin', ExtractFilePath(ParamStr(0))
          + 'Skins\Blue\Bounce.ske');
      BounceIni.Free;
zu
Delphi-Quellcode:
 
DefSkin := ExtractFileDir(ParamStr(0)) + '\Skins\Blue\Bounce.ske';
lösche
Zitat:
'C:\Users\BrewIdeas\AppData\Roaming\BrewIdeas\Boun ce\Bounce.ini'
und gut ist...

Das Problem ist wenn man den Pfad zur Konfigurationsdatei in der INI speichert und du das Projekt nach dem ersten Start
anschließend von einem anderen Pfad ausführst und der alte Pfad zur Ini (siehe erster Start) nicht mehr existiert wirft die Anwendung ein Exception.
Deshalb habe ich die Speicherung des Pfad jetzt mit diesen Änderungen aus der INI herausgenommen.

Geändert von venice2 (11. Mär 2022 um 13:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
210 Beiträge
 
Delphi 12 Athens
 
#8

AW: Ein Panel an eine Instanz einer Klasse TBall übergeben

  Alt 11. Mär 2022, 14:18
Habe den Fehler jetzt gefunden.
Der DefSkin Path war schon richtig, denn der Skins Ordner liegt im gleichen Ordner wie die .exe Datei.
Das Problem ist der Eintrag in der .ini Datei für den SkinPath.
Dieser wird nur beim ersten Aufruf des Programmes einmal gesetzt und liest ihn dann immer wieder, auch wenn die .exe jetz an einem anderen Ort liegt.
Dort war noch der Pfad aus der entpackten .rar Datei im Temp Verzeichnis drin, da ich beim ersten Versuch direkt aus der .rar Datei die .exe aufgerufen haben.
Nachdem ich die .rar datei geschlossen hatte, wurden dann auch die Dateien dort gelöscht und er konnte nichts mehr finden.

Man könnte das vermeiden, indem man, falls die Datei nicht gefunden wird, nochmal unter dem Pfad der .exe sucht.

Mich stört es, wenn mein Programm noch ein Verzeichnis davor braucht um die .exe zu speichern, daher lege ich die .exe entweder in das Projektverzeichnis oder wenn zur Exe noch andere Dateien gehören, dann lege ich die unter Projekt\_bin damit alles in einem Verzeichnis bleibt.
Das kann aber jeder für sich anders machen.

Das Problem hier war eigentlich nur, dass man die .exe Datei mit ihren Ordnern nicht verschieben darf, wenn es einmal gestartet wurde, da es den Pfad immer aus der .ini Datei liest und nicht mehr neu prüft. Dann brauche ich immer eine Setup Routine zum installieren des Programmes, die die .ini Datei dann neu anlegt.

Vielen Dank Venice2 dass Du Dir so viel Mühe mit mir gibst und mir weiterhilfst wenns mal nicht klappt.
Danke Danke Danke!!!
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:48 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