Autor |
Beitrag |
JayK
      
Beiträge: 1013
|
Verfasst: Sa 16.04.05 13:03
Hallo Leute,
ich habe ein Programm mit res Datei, wo JPGs drin sind.
Auf dem Formular befindet sich eine ComboBox. Wenn man den Wert in der ComboBox verändert, soll von der Ressource mit dem Namen, der dem Text in der Combobox entspricht, in ein TImage geladen werden.
Beispiel:
In der ComboBox wähle ich das Item 'ALL' aus.
In das Image soll nun 'ALL.jpg' aus der .res Datei geladen werden.
Kann mir da jemand weiterhelfen?
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Sa 16.04.05 13:09
JayK hat folgendes geschrieben: | Hallo Leute,
ich habe ein Programm mit res Datei, wo JPGs drin sind.
Auf dem Formular befindet sich eine ComboBox. Wenn man den Wert in der ComboBox verändert, soll von der Ressource mit dem Namen, der dem Text in der Combobox entspricht, in ein TImage geladen werden.
Beispiel:
In der ComboBox wähle ich das Item 'ALL' aus.
In das Image soll nun 'ALL.jpg' aus der .res Datei geladen werden.
Kann mir da jemand weiterhelfen? |
Da gibts was, das nennt sich Suche. Schon mal verwendet
AXMD
|
|
JayK 
      
Beiträge: 1013
|
Verfasst: Sa 16.04.05 13:20
AXMD hat folgendes geschrieben: |
Da gibts was, das nennt sich Suche. Schon mal verwendet |
Ja, allerdings.
Aber gefunden hab ich nichts, dass brauchbar ist oder für mich verständlich ist.
Das naheliegenste war Bitmaps von Resourcen lesen, aber das ist ja für Bitmaps und zu einem anderen Zweck.
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Sa 16.04.05 13:27
Das Resourcen-Prinzip ist aber immer das gleiche; was du danach mit den Ressourcen machst ist vollkommen unabhängig davon
AXMD
|
|
JayK 
      
Beiträge: 1013
|
Verfasst: Sa 16.04.05 13:39
Ich will nicht anmaßend wirken,
aber einem TBitmap werde ich ja wohl schlecht einem TJPEGImage oder ein JPG-Bild (falls das noch nichtmal diesen Typ zugewiesen bekommt) zuweisen. Oder doch  ?
Dasselbe für TIcon.
Und für TGraphic finde ich keine Handle Eigenschaft / Wert.
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Sa 16.04.05 13:42
Schon klar  Schon mal die Unit jpeg angeschaut oder TJPEGImage?
AXMD
|
|
JayK 
      
Beiträge: 1013
|
Verfasst: Sa 16.04.05 20:51
Da gibt's leider ein kleines Problem:
Wenn ich die aus dem Uses-Klausel zu öffnen versuche, öffnet er nur einen Laden-Dialog.
Borland schickt ja seine Units auch nicht einfach so als Pascal-Datei mit, sonst könnte man die ja einfach verändern und so  .
EDIT: Jepp, ist nur eine DCU Datei, schön vorcompiliert und durchgekaut.
|
|
JayK 
      
Beiträge: 1013
|
Verfasst: So 17.04.05 15:02
Na gut OK, ich habs jetzt mal über den Weg mit dem RessourceStream probiert, kriege aber immer wieder eine Zitat: | Zugriffsverletzung bei Adresse ... Lesen aus Adresse 00000000. |
zurück.
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: 24: 25: 26: 27: 28:
| uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, XPMan, ComCtrls, ExtCtrls, ToolWin, StdCtrls, ImgList, Buttons, JPEG, axCtrls, Spin;
...
image1: TImage;
...
procedure TMainForm.Anzeigen(Sender: TObject); var resstream: TResourceStream; begin resstream := tresourceStream.CreateFromID(hInstance, 100, RT_RCDATA); try image1.Picture.Graphic.LoadFromStream(ResStream); finally ResStream.Free; end; end;
procedure TMainForm.Button1Click(Sender: TObject); begin Anzeigen(Sender); end; |
Meine RC Datei sieht so aus:
Delphi-Quelltext 1: 2: 3:
| 100 RCDATA "img\all.jpg" 101 RCDATA "img\fa.jpg" ... |
und wurde einfach per "Zu Projekt hinzufügen" ins Projekt eingebunden.
Was mache ich jetzt schon wieder falsch?
(Link zum Thread, wo ich das her habe steht oben ja schon)
|
|
JayK 
      
Beiträge: 1013
|
Verfasst: Sa 23.04.05 12:43
Also es scheint ja keiner zu wissen, wie das anzustellen ist.
Geht das vielleicht einfacher, wenn man die JPEGs über "Zum Projekt hinzufügen" einfügt? Oder Frage: Wie kommt man da überhaupt ran?
Ansonsten würde ich natürlich auch gerne Antworten zum .res Problem noch hören.
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Fr 13.05.05 16:49
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| uses ..., JPEG;
...
procedure TForm1.BitBtn1Click(Sender: TObject); var Bild: TJPEGImage; begin Bild := TJPEGImage.Create; Bild.LoadFromFile('c:\temp\1.jpg'); image1.Picture.Assign(bild); bild.free; end; |
statt loadfromfile nimmst du loadfromresourcename und - tada - problem gelöst.
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
JayK 
      
Beiträge: 1013
|
Verfasst: Fr 13.05.05 16:59
retnyg hat folgendes geschrieben: | Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| uses ..., JPEG;
...
procedure TForm1.BitBtn1Click(Sender: TObject); var Bild: TJPEGImage; begin Bild := TJPEGImage.Create; Bild.LoadFromFile('c:\temp\1.jpg'); image1.Picture.Assign(bild); bild.free; end; |
statt loadfromfile nimmst du loadfromresourcename und - tada - problem gelöst. |
Wäre schön, ist aber nicht so  .
TJPEGImage hat anscheinend keine LoadFromRessourceName-Methode...
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Fr 13.05.05 17:03
oh
na dann probier es mal mit der stream-methode. dein .rc srcipt hast du aber schon mit brcc32 kompiliert ?
der name der jpg's wäre dann übrigens 100 und 101, nicht all oder so. erster absatz im rc script steht für den resource-namen.
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
JayK 
      
Beiträge: 1013
|
Verfasst: Fr 13.05.05 17:25
retnyg hat folgendes geschrieben: | oh
na dann probier es mal mit der stream-methode. |
hatte ich schon. (Siehe oben) Da kam immer diese dumme Fehlermeldung mit Lesen von Adresse 00000000...
retnyg hat folgendes geschrieben: | dein .rc srcipt hast du aber schon mit brcc32 kompiliert ? |
Ich habs einfach ins Projekt aufgenommen, denn wenn ich es über Kommandozeile mit brc32.exe compilieren will, kommt immer Borland Resource Compiler hat folgendes geschrieben: | Fatal error. Could not spawn program: ILINK32.EXE |
raus.
retnyg hat folgendes geschrieben: | der name der jpg's wäre dann übrigens 100 und 101, nicht all oder so. erster absatz im rc script steht für den resource-namen. |
Erster Absatz??? Ist erste Zeile, oder erster, na ja, "Parameter" gemeint?
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Fr 13.05.05 17:32
JayK hat folgendes geschrieben: | retnyg hat folgendes geschrieben: | oh
na dann probier es mal mit der stream-methode. |
hatte ich schon. (Siehe oben) Da kam immer diese dumme Fehlermeldung mit Lesen von Adresse 00000000... |
Quelltext 1:
| image1.Picture.Graphic.LoadFromStream(ResStream); |
mit dem code kann das nicht klappen, denn du kannst graphic keinen jpeg-stream zuweisen.
baue den code in die neue variante ein.
Zitat: | retnyg hat folgendes geschrieben: | dein .rc srcipt hast du aber schon mit brcc32 kompiliert ? |
Ich habs einfach ins Projekt aufgenommen, denn wenn ich es über Kommandozeile mit brc32.exe compilieren will, kommt immer Borland Resource Compiler hat folgendes geschrieben: | Fatal error. Could not spawn program: ILINK32.EXE | raus. |
such mal auf deiner platte nach der ilink32.exe. das verzeichnis wo die drin ist tust du zu deiner PATH-umgebungsvariable dazu (systemsteuerung, system, erweitert)
dann sollte es kompilieren. solange du das RC nicht zu einer RES datei kompilierst, existiert deine resource nicht.
der name der exe datei ist übrigens BR CC32.exe, nicht BRC32.exe
Zitat: |
retnyg hat folgendes geschrieben: | der name der jpg's wäre dann übrigens 100 und 101, nicht all oder so. erster absatz im rc script steht für den resource-namen. |
Erster Absatz??? Ist erste Zeile, oder erster, na ja, "Parameter" gemeint? |
so ist es gemeint. und tu die ordnernamen ( bla\x.gif ) aus deinem rc skript weg. also die bilder in den gleichen ordner legen, wie das RC skript
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
JayK 
      
Beiträge: 1013
|
Verfasst: Fr 13.05.05 17:50
retnyg hat folgendes geschrieben: | JayK hat folgendes geschrieben: |
Delphi-Quelltext 1:
| image1.Picture.Graphic.LoadFromStream(ResStream); | |
mit dem code kann das nicht klappen, denn du kannst graphic keinen jpeg-stream zuweisen.
baue den code in die neue variante ein. |
Neue variante? Hab ich was verpasst  ?
retnyg hat folgendes geschrieben: | JayK hat folgendes geschrieben: | wenn ich es über Kommandozeile mit brc32.exe compilieren will, kommt immer Borland Resource Compiler hat folgendes geschrieben: | Fatal error. Could not spawn program: ILINK32.EXE | raus. |
such mal auf deiner platte nach der ilink32.exe. das verzeichnis wo die drin ist tust du zu deiner PATH-umgebungsvariable dazu (systemsteuerung, system, erweitert) |
 jetzt hab ich auch 'ne idee, wie ich einfacher an den C#-Compiler rankomme  (nebenbei)
retnyg hat folgendes geschrieben: |
der name der exe datei ist übrigens BRCC32.exe, nicht BRC32.exe |
Ups,  hatte mich verschrieben  mit der br cc32.exe gehts erstmal ohne Fehler  .
retnyg hat folgendes geschrieben: | und tu die ordnernamen ( bla\x.gif ) aus deinem rc skript weg. also die bilder in den gleichen ordner legen, wie das RC skript |
Das wäre aber doof, es sind ca. 30 oder mehr Bilder...
Zuletzt bearbeitet von JayK am Fr 13.05.05 18:15, insgesamt 3-mal bearbeitet
|
|
GSE
      
Beiträge: 740
Win 2k, Win XP Pro
D5 Prof, D6 Ent, D2k5 PE
|
Verfasst: Fr 13.05.05 17:58
mal was prinizipielles (nicht zur Frage gehörendes)
Zitat: | Borland schickt ja seine Units auch nicht einfach so als Pascal-Datei mit, sonst könnte man die ja einfach verändern und so |
das ist nur in den personal bzw. Standard Versionen so, ab Delphi Pro liegen alle Borland-Units als pas Dateien vor, du kannst sie also auch einsehen und ggf. ändern.
mfg
GSE
_________________ Programming today is a race between software engineers striving to build bigger and better idiot-proof programs
and the universe trying to produce bigger and better idiots. So far, the universe is winning. (Richard Cook)
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Fr 13.05.05 18:14
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
JayK 
      
Beiträge: 1013
|
Verfasst: Fr 13.05.05 18:38
Super! Es klappt jetzt  . Danke Leute!! 
|
|
|