![]() |
AW: Syntax-Datenbank
Zitat:
NIL = ein Zeiger, in dem nichts drin ist Vermutung: Du hast vergessen die Komponente zu erstellen (wie mein Vorredner auch schon vermutete) PS: Der Dedugger sagt dir auch noch an welcher Codezeile das passiert und dort könnte man sich dann noch die Variablenwerte ansehn und schon weißt du, was da fehlt. |
AW: Syntax-Datenbank
Gut, das war etwas unglücklich, hab den Namen einfach mal in BildA geändert. Und ja, zum probieren hab ich das selbst in den Quellcode geschrieben, aber da gibt es sonst noch nichts sehenswertes, ich wollte ja erstmal nur testen ob das Laden des Bildes so funktioniert. Das Testprogramm sieht so aus:
Delphi-Quellcode:
Das ist schon alles.
program test;
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; var BildA: Timage; Directory:String; procedure wait(t: longint); {W A R T E} var a: longint; begin a := GetTickCount; repeat Application.ProcessMessages; until (GetTickCount > a+t); end; function Pfad: string; {D I R E C T O R Y} begin Result := ExtractFilePath(ParamStr(0)); Directory:=Result; end; begin Pfad; BildA.Picture.LoadFromFile(Directory+'\Bild1.bmp'); wait(5000); end. @Himitsu: Debug-Ausgabe: FTH: (5836): *** Fault tolerant heap shim applied to current process. This is usually due to previous crashes. *** Prozess Test.exe (5836) ist alles besondere, was ich sehe.. Meinst du die (5836)? Wie muss ich das denn lesen, um die Zeile zu finden? |
AW: Syntax-Datenbank
Hi,
jepp, das ist das Problem - da fehlt was. Du hast jetzt quasi gesagt, es wird da mal ein Bild geben, das wird den Namen BildA tragen, aber angelegt hast du es nicht. Was da also fehlt ist etwas in der Art (frei aus dem Kopf, keine Garantie)
Delphi-Quellcode:
und später, wenn du es nicht mehr brauchst, musst du es auch wieder aufräumen
BildA := TImage.Create();
Delphi-Quellcode:
- aber damit wäre es dann nicht getan - du musst dem Bild mindestens mal noch nen Parent zuweisen sowie auch Größe und Position wären sinnvoll.
BildA.Free();
Vermutlich ist es einfacher, du ziehst die Komponente auf dem Formular dorthin, wo du sie haben möchtest und nennst sie BildA. LG, Frederic |
AW: Syntax-Datenbank
Du hast Application nicht initialisiert. (schau mal in eine nomale DPR, welche Delphi anlegt)
Wenn du das Bild nicht anzeigen willst, dann verwende doch TPicture oder direkt TBitmap, da du ja ein Bitmap lädst. PS: Das mit dem globalen Directory-Parameter ist doch nicht wirklich dein Ernst? Bzw. vorallem das mit der Pfad-Funktion. :shock: PSSPPS: Du hast hier keine VCL-Anwendung, also kannst du auch dirtekt ![]() Die 5836 ist nur die interne Fehlernummer. Zitat:
3 Mal F7 F8 drücken und beim 4. Mal knallt es. Also spätestens nach dem 3. Mal wirst du sehn, daß die Variable "BildA" immernoch NIL ist und demanch muß es knallen, wenn auf die Picture-Eigenschaft des nichtexistierenden Bildes zugegriffen wird. |
AW: Syntax-Datenbank
Hmm, tut mir wirklich leid, aber irgendwie verstehe ich das nicht ganz - wenn ich das Bild "reinziehe", kann ich einen Pfad angeben und es funktioniert, scheibar "einfach so".
Aber wenn ich das dann in den tatsächlichen Code reingehe, um mir anzusehen, wie es richtig aussieht, steht da... nichts?! Das kann doch irgendwie nicht sein. Also um das verständlicher zu machen: Ich habe ein neues Projekt geöffnet, ein Timage reingezogen, den Pfad ausgesucht und es ging. Bei doppelklick darauf lese ich aber nur folgenden Code:
Delphi-Quellcode:
Es muss doch irgendwo der Pfad und das .create vermerkt sein oder bin ich jetzt völlig daneben?
unit Unit2;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm2 = class(TForm) Image1: TImage; procedure Image1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.Image1Click(Sender: TObject); begin end; end. @himitsu: Später soll das natürlich schon angezeigt werden, das war ja nur ein test(und dann werden es auch .jpg Dateien sein). Ich komme mir irgendwie ziemlich blöd vor bei den ganzen Fehlern. Gibt es nicht ein Tutorial, das den Umgang hiermit von Grund auf erklärt, damit ich euch das hier ersparen kann? zu PS: Wo ist denn das Problem damit? zu PPPS: Ah! Wieder was gelernt ;-) |
AW: Syntax-Datenbank
Wenn du den Formulareditor benutzt, wird das Bild als Resource ins Projekt übernommen und mit in die Exe einkompilierteingelinkt. Deshalb siehst du da nirgendwo einen Pfad ;)
|
AW: Syntax-Datenbank
Zu deiner PAS gibt es hier noch eine DFM.
In dieser DFM-Resource steht drin, was alles auf der Form liegt und welche eigenschaften dieses hat. Die VCL läd nun, beim Erstellen der TForm1-Instanz, diese DFM und erstellt die enthaltenen Komponenten. Das
Delphi-Quellcode:
wird also vom VCL-Loader automatisch gemacht.
Image1 := TImage.Create
Du wolltest das TImage aber ohne den VCL-Loader nutzen und dann mußt du das TImage auch sleber erstellen und ebenfalls die nötigen Eigenschaften setzen. PS: Wenn du über den OI ein Bild in das TImage lädst, dann wird das Bild zu diesem Zeitpunkt in die Kompoente geladen und dann direkt in der DFM gespeichert. Beim Laden der Form kommt dann das Bild aus der DFM und die externe Datei wird nicht mehr benötigt. PSS: Rechtsklick auf die Form und "Ansicht als Text". (oder direkt in die .DFM reinsehn, wenn diese im Textformat gespeichert wurde, dann sieht man auch etwas) |
AW: Syntax-Datenbank
Kopf -> Tisch ...
Okay, aber das Bild möchte ich in ein Programm einfügen, dass ohne Formulare etc. erstellt wurde, also muss ich entweder das gesamte Programm umstellen (Was ein riesenhaufen Arbeit wäre, abgesehen davon, dass ich mich garnicht sogut damit auskenne, als das ich mir das zutrauen würde) oder das Bild anpassen. Aber wie krieg ich jetzt den korrekten Umgang mit Timage raus (Am besten ohne mir alles von euch vorsagen zu lassen :P)? P.S: Vielen Dank übrigens für eure Geduld mit mir. Ich gebe mir wirklich Mühe, mitzukommen und möglichst selbst drauf zu kommen, bin aber eben noch sehr unerfahren mit Delphi. *Edit* Entschuldigung, dein PSS(...) hatte ich nicht gesehen ([OT] Warum eigentlich PSS? [/OT]). Damit kommen wir der Sache ja schon etwas näher. Allerdings steht da auch nicht der Pfad, sondern nur die Bildinformation, die aus einem gigantischem Zahlen/Buchstaben-Salat besteht. |
AW: Syntax-Datenbank
Zitat:
(in der OH steht auch was für Parameter dort nötig sind > ![]() Zitat:
|
AW: Syntax-Datenbank
Soweit bin ich mit der Suche schon selbst gekommen, nur gebracht hatt es mir leider nichts ;) Das Problem ist, dass ich die Parametereingabe nicht verstehe - und wenn ich mir den Text zu Owner und die weiterführenden durchlese, wird es nur noch schlimmer. Es soll kein Objekt für die Freigabe usw. zuständig sein, das Bild soll einfach nur zu einer voher im Programm festgelegten Zeit aufgerufen, angezeigt und je nach Programmverlauf(Der ist aber auch schon festgelegt) verschoben oder verändert werden. Was ich suchte war im Prinzip also
"...ZeigeBild1(Position)...VerschiebeBild1(NeuePos ition)...ZeigeBild2..." usw. Und zum zweiten: Meinst du damit, ich soll alle Bilder (Das wären so um die 100)in dieser Form in mein Programm Kopieren? Dann hab ich ja Seitenweise Buchstabensalat im Quellcode.. geht das nicht anders? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:16 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