AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Indexen eines Arrays unterschiedliche Proz. zuweisen
Thema durchsuchen
Ansicht
Themen-Optionen

Indexen eines Arrays unterschiedliche Proz. zuweisen

Ein Thema von Airblader · begonnen am 9. Nov 2005 · letzter Beitrag vom 9. Nov 2005
 
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Indexen eines Arrays unterschiedliche Proz. zuweisen

  Alt 9. Nov 2005, 15:35
Zitat:
Ich habs im Moment so:

Delphi-Quellcode:
procedure MyProc(Sender: TObject);

...

MyArr[i].OnDoMyProc := MyProc;

...

MyArr[i].OnDoMyProc(Self);
Es kommt beim Prozedurkopf (also 1. Teil im QT) folgende Meldung:

Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur'
Naja, die Fehlermeldung sagt doch alles aus
MyArray[ i ].OnDoMyProc will einen Zeiger auf eine Methode, was MyProc ja nicht ist, weil es nur eine 'reguläre Prozedur' ist. Luckie hat mal ein Beispiel geschrieben, wie man einen Timer in einer Konsolenanwendung verwenden kann, das Beispiel liegt auf seiner Homepage (ich tu den Link jetz nich posten, weils mir selber schon bei anderen Threads passiert ist, dass Luckie inzwischen die Struktur seiner HP und somit die URL geändert hat). Das ist dann in etwa das gleiche Schema. Du brauchst praktisch ein Objekt, um eine Mehtode zu haben


//edit: Noch was *g*
Wenn du auf Delphi 2006 wartest, dann kannst du in records auch Prozeduren und Funktionen definieren, ohne Friemelei
Records sind einfach nicht für Prozeduren gedacht, sondern halt einfach zur Datenspeicherung.

//edit: Noch was
Das vorangestellte T ist eigentlich für Klassen gedacht, wenn dus bei anderen "Sachen" verwendest, ist das irreführend

//edit: Hab das Ganze mal selber getestet *g*
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Dingsda(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

  MyRec = record
   IntBla: integer;
   StrBla: string[255];
   OnDingsda: TNotifyEvent;
  end;

var MyRec1: MyRec;

procedure TForm1.Dingsda(Sender: TObject); // <--- Das klappt, weils jetz ne Methode ist
begin // Würde auch klappen, wenn du statt TForm1 ein Dummyobjekt erzeugst
  ShowMessage(Sender.ClassName); // Haputsache, MyRec1.OnDingsda zeigt auf eine Methode
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MyRec1.IntBla := 234;
  MyRec1.StrBla := 'Hallo auch';
  MyRec1.OnDingsda := Dingsda;
  MyRec1.OnDingsda(self);
end;
Julian J. Pracht
  Mit Zitat antworten Zitat
 


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 02:08 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