AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Syntax-Datenbank

Ein Thema von Mpex · begonnen am 26. Dez 2011 · letzter Beitrag vom 28. Dez 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#1

AW: Syntax-Datenbank

  Alt 27. Dez 2011, 13:04
Hi,

und Bild1 ist auch der Name, den die Komponente auf deinem Formular jetzt trägt?
Oder bist du wieder von der "aufs Form ziehen"-Lösung weg und erstellst das TImage selbst im Quellcode? Falls ja, wäre der Code-Teil interessant.


LG, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.339 Beiträge
 
Delphi 12 Athens
 
#2

AW: Syntax-Datenbank

  Alt 27. Dez 2011, 13:11
Zitat:
Lesen von Adresse 000001A8.
$00000000 + Property/Feld-Offest = nil

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.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Mpex

Registriert seit: 26. Dez 2011
12 Beiträge
 
#3

AW: Syntax-Datenbank

  Alt 27. Dez 2011, 13:18
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:
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.
Das ist schon alles.

@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?

Geändert von Mpex (27. Dez 2011 um 13:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#4

AW: Syntax-Datenbank

  Alt 27. Dez 2011, 13:24
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) BildA := TImage.Create(); und später, wenn du es nicht mehr brauchst, musst du es auch wieder aufräumen BildA.Free(); - 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.

Vermutlich ist es einfacher, du ziehst die Komponente auf dem Formular dorthin, wo du sie haben möchtest und nennst sie BildA.


LG, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.339 Beiträge
 
Delphi 12 Athens
 
#5

AW: Syntax-Datenbank

  Alt 27. Dez 2011, 13:44
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.

PSSPPS: Du hast hier keine VCL-Anwendung, also kannst du auch dirtekt Delphi-Referenz durchsuchenSleep verwenden, anstatt diesem Wait.


Die 5836 ist nur die interne Fehlernummer.
Zitat:
Wie muss ich das denn lesen, um die Zeile zu finden?
In diesem Fall? (da hier sämtliche Exceptionbehandlung fehlt, welche die VCL sonst noch automatisch mitbringt)

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.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (27. Dez 2011 um 22:24 Uhr)
  Mit Zitat antworten Zitat
Mpex

Registriert seit: 26. Dez 2011
12 Beiträge
 
#6

AW: Syntax-Datenbank

  Alt 27. Dez 2011, 13:58
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:
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.
Es muss doch irgendwo der Pfad und das .create vermerkt sein oder bin ich jetzt völlig daneben?

@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
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Syntax-Datenbank

  Alt 27. Dez 2011, 14:04
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
  Mit Zitat antworten Zitat
Mpex

Registriert seit: 26. Dez 2011
12 Beiträge
 
#8

AW: Syntax-Datenbank

  Alt 27. Dez 2011, 14:11
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.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.

Geändert von Mpex (27. Dez 2011 um 14:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.339 Beiträge
 
Delphi 12 Athens
 
#9

AW: Syntax-Datenbank

  Alt 27. Dez 2011, 14:21
Aber wie krieg ich jetzt den korrekten Umgang mit Timage raus (Am besten ohne mir alles von euch vorsagen zu lassen )?
Tipp: In meinem letzen Post versteckte sich ein Stückchen Quellcode.
(in der OH steht auch was für Parameter dort nötig sind > Delphi-Referenz durchsuchenTImage.Create ... Tipp: NIL)

Allerdings steht da auch nicht der Pfad, sondern nur die Bildinformation, die aus einem gigantischem Zahlen/Buchstaben-Salat besteht.
Wie gesagt, den Pfad gibt es dort nicht, da dort direkt das Bild drin ist ... schön kodiert, damit es als Text reinpaßt. (Binärdaten in einer Textdatei sind nicht sonderlich praktisch )
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Syntax-Datenbank

  Alt 27. Dez 2011, 21:05
[OT] Warum eigentlich PSS? [/OT]
Eigentlich heißt es PPS *klugscheiß*
PS = Post Scriptum = nach dem geschriebenen
PPS = Post Post Scriptum = nach dem nach dem geschriebenen
PPPS = Post Post Post Scriptum = nach dem nach dem nach dem geschriebenen
  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 12:15 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