Autor Beitrag
Sakura_Zan-yoo
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Do 09.10.08 20:32 
Erstmal ein nettes Hallo an alle

Ich habe erst seit anfang dieses Schuljahres Informatik und bin, was sehr viele Bereiche anbetrifft, noch schrecklich unwissend, aber eine kleine Sache hatte ich vor: Ein Programm zu erstellen, welches beim Systemstart geöffnet wird und per Zufallsprinzip eines der angegeben Komplimente anzeigt. Das alles hat bis jetzt funktioniert, aber es sieht, TImage hin oder her, schrecklich langweilig aus. Also habe ich mich gefragt, ob es nicht auch möglich ist ebenfalls epr Zufallsprinzip verschiedene Bilder anzuzeigen. Leider hab cih nciht die geringste Ahung, wie ich das machen soll. Mehrere TImages überlappen sich und ich wüsste auch cniht, wie ich nur eine einzelne anzeigen kann. Und mit "ImageList" kann ich leider gar nichts anfangen.
Könnt ihr mir vielleicht helfen?

Vielen Dank im Vorraus
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19276
Erhaltene Danke: 1741

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 09.10.08 21:10 
Ja, hallo und :welcome: im Forum ;-)

Du kannst die Bilder mit in deine Exe packen, eine ähnliche Frage gab es vor kurzem, interessant in diesem Zusammenhang ist dann vor allem meine Antwort hier:
www.delphi-forum.de/....php?p=527626#527626
Dann brauchst du nur 1 TImage und nebenbei lernst du noch eine interessante Möglichkeit Daten / Dateien mit einem Programm mitzuliefern kennen ;-).

// EDIT:
Ach so, die einfache aber nicht besonders schöne Lösung siehst du in dem Topic auch. (Immer nur eine der TImage-Komponenten sichtbar machen)
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 09.10.08 23:49 
Titel: program wallpaper
Original:
www.saschahlusiak.de...ds/wallpaper_src.zip

ausblenden Delphi-Quelltext
1:
2:
  main.Image1.picture.LoadFromFile(path); //nachträglich eingefügt
  systemparametersinfo(spi_SETDESKWALLPAPER,0,pchar(path),SPIF_UPDATEINIFILE);

.
Einloggen, um Attachments anzusehen!
Sakura_Zan-yoo Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 10.10.08 23:16 
Ich glaube, das würde mir weiterhelfen, wenn ich alles verstehen würde. Aber danke für den Link jaenicke.
Zuerst habe ich versucht eine Ressource zu erstellen, bin aber daran gescheitert, als ich die *.rc nicht zu einer *.res umwandeln konnte, dabei habe ich alles gemacht, was im Tutorial stand.
Dann habe ich die Version mit mehreren TImage Komponenten ausprobiert, das hat aber auch nicht agnz funktioniert, da ich nicht genau verstehe, was dieses "statuspic" mir sagen soll. Wenn ich dort, wie beschrieben, Statuspic einsetze, bekomme ich die Fehlermeldung :"[Error] Unit1.pas(70): Undeclared identifier: 'Statuspic'". Sobald ich eine vorher deklarierte Variable einsetze, sagt er mir bloß "[Error] Unit1.pas(71): Incompatible types".
Mit Hathor's Beitrag kann ich leider nichts anfangen, da die Dateien, die ich heruntergeladen habe, nur einen Quelltext voll von Beschreibungen der einzelenen Komponenten anzeigen und kein Programm ausführbar ist. Mache ich etwas falsch?
Tut mir Leid, wenn ich mich ein wenig blöd anstelle v.v
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19276
Erhaltene Danke: 1741

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 10.10.08 23:21 
user profile iconSakura_Zan-yoo hat folgendes geschrieben Zum zitierten Posting springen:
Zuerst habe ich versucht eine Ressource zu erstellen, bin aber daran gescheitert, als ich die *.rc nicht zu einer *.res umwandeln konnte, dabei habe ich alles gemacht, was im Tutorial stand.
Was ist denn passiert? ;-)
Da musst du schon genauer werden, dann kann man dir auch dabei helfen ;-).

user profile iconSakura_Zan-yoo hat folgendes geschrieben Zum zitierten Posting springen:
Dann habe ich die Version mit mehreren TImage Komponenten ausprobiert, das aht aber auch cniht agnz funktioniert, da ich nicht genau verstehe, was dieses "statuspic" mir sagen soll.
Das ist in diesem Quelltext einfach nur ein String, der die Nummer des Bildes enthält. Aber die Variante vom Anfang ist nicht so besonders gut.
Wenn, dann nimm die etwas weiter unten:
www.delphi-forum.de/....php?p=527619#527619
Dabei kannst du auch die Abfrage anders machen, je nachdem wonach du entscheidest wann ein Bild sichtbar sein soll.
Sakura_Zan-yoo Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 10.10.08 23:48 
So, folgendes ist passiert : Screenshot
Ansonsten: die *.rc datei existiert, bearbeitet habe ich sie mit delphi.

Die andere Vorgehensweise habe ich mir angesehen, probiere ich dann auch aus, wenn ich endlich eine Ressource erstellt habe, aber was ist denn "(hinstance, 'bild' + NGUinGrid.Cell[0,h].AsString)"?

*Schüssel Kekse hinstell*
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19276
Erhaltene Danke: 1741

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 11.10.08 00:01 
user profile iconSakura_Zan-yoo hat folgendes geschrieben Zum zitierten Posting springen:
So, folgendes ist passiert : Screenshot
Ansonsten: die *.rc datei existiert, bearbeitet habe ich sie mit delphi.
Wie sieht die denn aus? Der Compiler meldet ja einen Fehler darin ;-).

user profile iconSakura_Zan-yoo hat folgendes geschrieben Zum zitierten Posting springen:
Die andere Vorgehensweise habe ich mir angesehen, probiere ich dann auch aus, wenn ich endlich eine Ressource erstellt habe, aber was ist denn "(hinstance, 'bild' + NGUinGrid.Cell[0,h].AsString)"?
Der erste Parameter ist praktisch der Hinweis wo es die Ressource suchen soll, in diesem Fall deine Exe.
Der zweite Parameter, da musst du "'bild' + NGUinGrid.Cell[0,h].AsString" einfach durch deinen Bildnamen ersetzen, also 'bild1', 'bild2' o.ä., also z.B. 'bild' + IntToStr(bildnummer), wenn bildnummer ein Integerwert mit der Nummer des Bildes ist.

user profile iconSakura_Zan-yoo hat folgendes geschrieben Zum zitierten Posting springen:
*Schüssel Kekse hinstell*
Danke *mampf* :mrgreen:
Sakura_Zan-yoo Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Sa 11.10.08 00:07 
Also in der Datei steht folgendes drinn:

growing-hearts BITMAP "D:\Dokumente und Einstellungen\Olga\Eigene Dateien\Ressources\growing-hearts.bmp"
heartsdelphi BITMAP "D:\Dokumente und Einstellungen\Olga\Eigene Dateien\Ressources\heartsdelphi.bmp"
rosendelphi BITMAP "D:\Dokumente und Einstellungen\Olga\Eigene Dateien\Ressources\rosendelphi.bmp"
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19276
Erhaltene Danke: 1741

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 11.10.08 00:36 
Da an Position 9 in der ersten Zeile der Fehler auftritt würde ich mal vorschlagen, dass du das '-' davor an Position 8 wegnimmst ;-).
Ich weiß zwar auch nicht welche Zeichen vorkommen dürfen, aber ein '-' offenbar nicht (ich habe es nie mit Sonderzeichen ausprobiert).
Sakura_Zan-yoo Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Sa 11.10.08 20:33 
Vielen Dank, jetzt konnte ich die Datei umwandeln. Habe sie auch wie im Tutorial beschrieben in das Projekt miteingebunden. Allerdings sagt mir Delphi dann "[Warning] Unit1.pas(26): File not found: 'Aufmunterungsprogramm.res'". Der Dateiname stimmt definitiv, der Ordner in dem sich die *.res und die übrigen Dateien befinden ist ein Unterordner des Projekts und der Pfad wurde auch dementsprechend in der *.rc verändert.

Was den Quellcode anbetrifft, habe ich versucht ihn einzubauen, kann aber nicht sagen, ob er funktioniert, da er ja die *.res nicht findet ~.~

ausblenden Delphi-Quelltext
1:
heartsdelphi.Picture.Bitmap.LoadFromRessourceName(hinstance, 'heartsdelphi' + IntToStr (Zahl));					


Also die Variable Zahl ist in dem Fall die "Zufallszahl". Stimmt das so? Ich habe so das Gefühl, dass irgendwo noch eine Zahl fehlt.

Edit: Achja, kann ich das dort einfach so einfügen, oder muss ich mit einem Case-of arbeiten?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19276
Erhaltene Danke: 1741

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 11.10.08 20:49 
Wenn die Datei in einem Unterordner liegt, dann musst du den Ordner auch in der Zeile, in der du die Datei einbindest, mit dazuschreiben, woher sollte Delphi sonst auch wissen, wo die Datei liegt? ;-)
Beispiel:
ausblenden Delphi-Quelltext
1:
{$R Res\Sound.res}					
Die .rc Datei hat mit der Einbindung nichts zu tun, da solltest du auch keine absoluten Pfade nutzen, wenn die Dateien im selben Ordner liegen kannst du die Ordner auch weglassen in der .rc ;-).

// EDIT:
user profile iconSakura_Zan-yoo hat folgendes geschrieben Zum zitierten Posting springen:
Edit: Achja, kann ich das dort einfach so einfügen, oder muss ich mit einem Case-of arbeiten?
Das ist ansonsten schon richtig so ;-).
Sakura_Zan-yoo Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mo 13.10.08 18:27 
Um ehrlich zu sein verzweifliche ich langsam... Mittlerweile findet er die *.res zwarm aber ich bekomme folgende Fehlermeldung "[Error] Unit1.pas(69): Record, object or class type required". Was heißt das? Ich kann mit diesen drei Begrifen innerhalb von Delphi nichts anfangen. Hier mein Quelltext:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
implementation

{$R *.dfm}
{$R Ressources/Aufmunterungsprogramm.res}

var Nummer, Zahl : Integer;
    Kompliment, growinghearts, heartsdelphi, rosendelphi: String;
procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
Zahl:= Random (3) + 1;
Nummer:= Random (31) + 1;
case Nummer of
    1 : Kompliment :='Beispieltext';
//etc
end;
KomplimentLabel.Caption := Kompliment;
growinghearts.Picture.Bitmap.LoadFromRessourceName(hinstance, 'growinghearts' + IntToStr (Zahl));
heartsdelphi.Picture.Bitmap.LoadFromRessourceName(hinstance, 'heartsdelphi' + IntToStr (Zahl));
rosendelphi.Picture.Bitmap.LoadFromRessourceName(hinstance, 'rosendelphi' + IntToStr (Zahl));
    end;

end.

Ich habe die drei Bilder einfach als Varibel deklariert, weil eine dementsprechnde Fehlermeldung kam.
Ich hoffe, ich mache nicht zu viele Umstände ...
*Größere Schüssel Kekse hinstellt*
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19276
Erhaltene Danke: 1741

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 13.10.08 18:28 
user profile iconSakura_Zan-yoo hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
var Nummer, Zahl : Integer;
    Kompliment, growinghearts, heartsdelphi, rosendelphi: String;
procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
Zahl:= Random (3) + 1;
Nummer:= Random (31) + 1;
case Nummer of
    1 : Kompliment :='Beispieltext';
//etc
end;
KomplimentLabel.Caption := Kompliment;
growinghearts.Picture.Bitmap.LoadFromRessourceName(hinstance, 'growinghearts' + IntToStr (Zahl));
heartsdelphi.Picture.Bitmap.LoadFromRessourceName(hinstance, 'heartsdelphi' + IntToStr (Zahl));
rosendelphi.Picture.Bitmap.LoadFromRessourceName(hinstance, 'rosendelphi' + IntToStr (Zahl));
;-)
Sakura_Zan-yoo Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mo 13.10.08 18:35 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconSakura_Zan-yoo hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
var Nummer, Zahl : Integer;
    Kompliment, growinghearts, heartsdelphi, rosendelphi: String;
procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
Zahl:= Random (3) + 1;
Nummer:= Random (31) + 1;
case Nummer of
    1 : Kompliment :='Beispieltext';
//etc
end;
KomplimentLabel.Caption := Kompliment;
growinghearts.Picture.Bitmap.LoadFromRessourceName(hinstance, 'growinghearts' + IntToStr (Zahl));
heartsdelphi.Picture.Bitmap.LoadFromRessourceName(hinstance, 'heartsdelphi' + IntToStr (Zahl));
rosendelphi.Picture.Bitmap.LoadFromRessourceName(hinstance, 'rosendelphi' + IntToStr (Zahl));
;-)


Ich weiß, dass es falsch ist, aber ich weiß nicht was ich ändern muss. Wie schon gesagt, ich arbeite erst seit August mit Delphi und habe demensprechend keine Ahnung.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19276
Erhaltene Danke: 1741

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 13.10.08 18:38 
In Strings kannst du keine Bilder laden, und Strings haben auch keine Eigenschaften, also das was hinter dem Punkt kommt, daher die Fehlermeldung.

Statt das als Variablen zu deklarieren pack mal TImage-Komponenten auf das Formular, die so heißen ;-).
Sakura_Zan-yoo Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mo 13.10.08 19:16 
So, diesbezüglich bekomme ich keine Fehlermeldung mehr, aber ich habe so das Gefühl, dass Delphi mich nicht mag. Mittlerweile hat es sich nämlich zum "LoadFromRessourceName" vorangearbeitet udn sagt: "[Error] Unit1.pas(71): Undeclared identifier: 'LoadFromRessourceName'". Das finde ich sehr eigenartig und ich habe schon alles mögliche ausprobiert. Es als Variable zu deklarieren, das "LoadFromRessourceName" durch den Namen der *.res ersetzt, nur teilweise ersetzt (also "LoadFromNameDerRessource" oder "LoadNameDerRessource" oder "LoadFromRessourceNameDerRessource") , den Pfad angegeben, alle möglichen zeichen eingesetzt, aber es klappt nicht. Und nun?
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Mo 13.10.08 19:20 
Resource wird auch nur mit einem S geschrieben. :zwinker:
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19276
Erhaltene Danke: 1741

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 13.10.08 19:22 
Ja, das ist fies, weil es im Deutschen mit 2 s und im Englischen mit einem geschrieben wird. ;-)
Sakura_Zan-yoo Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mo 13.10.08 19:39 
Herrje, wenn Dummheit tödlich wäre...

Mein Programm stürzt beim Öffnen ab (Es lässt sich öffnen!!!), er könnte die Datei "growinghearts.bmp" nicht öffnen. Ich habe, nach dem Fehler den Ordner umbenannt (damit es einfach korrekt geschrieben wird :wink: ) , auch in der *.rc, wollte es neu konvertieren und dort bekomme ich die gleiche Fehlermeldung.

Moderiert von user profile iconNarses: Bild als Anhang hochgeladen
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19276
Erhaltene Danke: 1741

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 13.10.08 22:27 
Du hast die .rc Datei im Unterverzeichnis Resources drin, und dann musst du darin den Ordner nicht in die .rc reinschreiben beim Pfad zu den Bitmaps, denn dieser relative Pfad geht vom Verzeichnis der .rc Datei aus. ;-)

Bei der Einbindung der erzeugten .res Datei in das Delphiprogramm geht es dann wieder relativ von der Datei, in der du diese Datei einbindest, aus ;-).