Zeichnen TImage falsche Farbe bei Hintergrundbild

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...

Re: Zeichnen TImage falsche Farbe bei Hintergrundbild

Beitragvon theo » 16. Jul 2017, 09:10 Re: Zeichnen TImage falsche Farbe bei Hintergrundbild

Du bringst wieder Klassenmethoden mit normalen durcheinander.

Hast du das schon gelesen?
https://www.delphi-treff.de/object-pasc ... d-objekte/
Nimm dir Zeit dafür, das zu verstehen.
Es ist eine tolle, knappe Zusammenfassung des Wesentlichen in Punkto Delphi und Objektorientierung.
theo
 
Beiträge: 7852
Registriert: 11. Sep 2006, 18:01

Beitragvon compmgmt » 16. Jul 2017, 10:58 Re: Zeichnen TImage falsche Farbe bei Hintergrundbild

vazili_Zaitzef hat geschrieben:[...]
Code: Alles auswählen
procedure TForm1.Button3Click(Sender: TObject);
begin
  TVersuch.Zweitefunction();
end;
[...]
Und schon ist der Fehler da...

Du musst auch eine Variable nehmen, nicht die Klasse. Die Klasse ist quasi nur die "Vorlage". Allgemein musst du folgendermaßen vorgehen:
1. Erstellen
2. Funktionen der Klasse Aufrufen
3. Zerstören und Freigeben, wenn es nicht mehr benötigt wird. (in bestimmten Fällen nicht notwenig, da es automatisch gemacht wird)

Also in deinem Beispiel ungefähr so:
Code: Alles auswählen
 
var
  Versuch: TVersuch; // Variable definieren
begin
  Versuch := TVersuch.Create; // Erstellen
  Versuch.ZweiteFunktion; // Funktionsaufruf
end;
Signatur.exe hat eine Zugriffsverletzung ausgelöst und muss beendet werden
compmgmt
 
Beiträge: 261
Registriert: 25. Nov 2015, 17:06
Wohnort: in der Nähe von Stuttgart
OS, Lazarus, FPC: Win 10 Pro + Linux Manjaro 17.0.2 | Lazarus 1.6.4 | FPC 3.0.2 | 
CPU-Target: i386 + x86_64
Nach oben

Beitragvon vazili_Zaitzef » 16. Jul 2017, 21:03 Re: Zeichnen TImage falsche Farbe bei Hintergrundbild

Danke :)

Vollhorst im Dienst. Gleiche Fehler ein zweites Mal :oops:
Danke für die Hilfe :)

Da habe ich noch eine Frage :?:

Kann man auch Klassen weiter runter brechen?

Versuch.ZweiteFunktion.ErsteOperation
vazili_Zaitzef
 
Beiträge: 43
Registriert: 6. Dez 2012, 21:55
OS, Lazarus, FPC: Win7 64 (L 1.6 FPC 3.0.0) | 
CPU-Target: 64Bit
Nach oben

Beitragvon m.fuchs » 16. Jul 2017, 21:13 Re: Zeichnen TImage falsche Farbe bei Hintergrundbild

vazili_Zaitzef hat geschrieben:Kann man auch Klassen weiter runter brechen?

Versuch.ZweiteFunktion.ErsteOperation


Warum nicht:

Code: Alles auswählen
unit MeineUnit;
{$MODE ObjFpc}
{$H+}
 
interface
 
uses
  Classes, SysUtils;
 
type
  TMeineSubClass = class(TObject)
    public
      procedure MeineMethode;
  end;
 
  TMeineClass = class(TObject)
    private
      FMeineSubClass: TMeineSubClass;
    public
      property MeineSubClass: TMeineSubClass read FMeineSubClass;
    public
      constructor Create;
      destructor Destroy; override;
  end;
 
var
  MeineClass: TMeineClass;
 
implementation
 
procedure TMeineClass.SetMeineSubClass(AValue: TMeineSubClass);
begin
  if FMeineSubClass = AValue then Exit;
  FMeineSubClass := AValue;
end;
 
constructor TMeineClass.Create;
begin
  inherited Create;
  FMeineSubClass := TMeineSubClass.Create;
end;
 
destructor TMeineClass.Destroy;
begin
  FreeAndNil(FMeineSubClass);
  inherited Destroy;
end;
 
procedure TMeineSubClass.MeineMethode;
begin
  Beep;
end;
 
initialization
  MeineClass := TMeineClass.Create;
 
finalization
  FreeAndNil(MeineClass);
 
end.


Der Aufruf kann dann zum Beispiel so erfolgen:
Code: Alles auswählen
program Project1;
{$MODE ObjFpc}{$H+}
 
uses
 Classes, MeineUnit;
 
begin
  MeineUnit.MeineClass.MeineSubClass.MeineMethode;
end.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
m.fuchs
 
Beiträge: 1588
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.6, FPC 3.0) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon Mathias » 16. Jul 2017, 21:42 Re: Zeichnen TImage falsche Farbe bei Hintergrundbild

Kann man auch Klassen weiter runter brechen?

Dazu noch was lustiges, sowas wird fehlerlos kompiliert. Aber beim Ausführen wird ein SIGSEV ausgelöst. :mrgreen:
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
begin
  Parent.Parent.Parent.Parent.Parent.Parent.Parent := Self;
end;


Ein Beispiel, das eher Sinn mach, da sieht man die Verschachtelung sehr gut.
Es Wird dass erste Byte eine Images ausgelesen.
Code: Alles auswählen
var
  b: byte;
begin
  b := Image1.Picture.Bitmap.RawImage.Data^;
 
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 2785
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon vazili_Zaitzef » 18. Jul 2017, 19:50 Re: Zeichnen TImage falsche Farbe bei Hintergrundbild

Danke, das sieht doch gut aus.
Werde ich in meinem Urlaub mal ausprobieren :)
Bin mal gespannt was so geht :)
:mrgreen:
vazili_Zaitzef
 
Beiträge: 43
Registriert: 6. Dez 2012, 21:55
OS, Lazarus, FPC: Win7 64 (L 1.6 FPC 3.0.0) | 
CPU-Target: 64Bit
Nach oben

• Themenende •
Vorherige

Zurück zu Multimedia



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried