AGB  ·  Datenschutz  ·  Impressum  







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

Was ist eine Callback Funktion

Ein Thema von Luckie · begonnen am 29. Mär 2006 · letzter Beitrag vom 23. Apr 2006
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#21

Re: Was ist eine Callback Funktion

  Alt 30. Mär 2006, 21:26
Zitat:
(Handles in C-APIs sind oft nicht anderes als Referenzen auf interne C++-Objekte).
Daran zweifle ich stark. Das sind eher die "ID-s", die dafür benuzt werden, die entsprechende Objekte ( sei es c++ "classes" oder "noramle struct" Gebilde) in einer Tabele(von Windows verwaltet, versteht sich) zu finden.
Hättest du recht, wäre das IMO eine potenzielle Sicherkeitslücke.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#22

Re: Was ist eine Callback Funktion

  Alt 30. Mär 2006, 21:40
Zitat von sniper_w:
Zitat:
(Handles in C-APIs sind oft nicht anderes als Referenzen auf interne C++-Objekte).
Daran zweifle ich stark. Das sind eher die "ID-s", die dafür benuzt werden, die entsprechende Objekte ( sei es c++ "classes" oder "noramle struct" Gebilde) in einer Tabele(von Windows verwaltet, versteht sich) zu finden.
Hättest du recht, wäre das IMO eine potenzielle Sicherkeitslücke.
Ich rede nicht von Windows APIs...
(sondern von Projekten die in C++ entwickelt werden und als kleinsten gemeinsamen Nenner eine flache "C"-API anbieten müssen)
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#23

Re: Was ist eine Callback Funktion

  Alt 30. Mär 2006, 21:47
Zitat von NicoDE:
Ich rede nicht von Windows APIs...
(sondern von Projekten die in C++ entwickelt werden und als kleinsten gemeinsamen Nenner eine flache "C"-API anbieten müssen)
Insofern hast völlig recht
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#24

Re: Was ist eine Callback Funktion

  Alt 30. Mär 2006, 23:34
So, ich habe das hier noch mal alles in einem Artikel auf meiner Homepage zusammengefasst: Callback-Funktionen. ich hoffe es ist korrekt und einigermaßen verständlich erklär.

Der entsprechende Thread in der Tutorialsparte: http://www.delphipraxis.net/internal...ct.php?t=79464
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#25

Re: Was ist eine Callback Funktion

  Alt 30. Mär 2006, 23:56
Rückruffunktionen werden auch bei Sortierverfahren eingesetzt. Beispiel: Ich will einen ganzen Haufen TAutos sortieren. Meine Sortierfunktion kann natürlich nicht wissen, nach welchen Kriterien ich meine Autos sortiert haben will, also übergebe ich eine Funktion, um diese Entscheidung zu treffen.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#26

Re: Was ist eine Callback Funktion

  Alt 31. Mär 2006, 00:22
Ah, sehr schöne Ergänzung.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
runger
(Gast)

n/a Beiträge
 
#27

Re: Was ist eine Callback Funktion

  Alt 31. Mär 2006, 08:16
Hallo Luckie,

ich bin etwas verwirrt, bei mir funktioniert das hier nicht:

  DoSomething(@Callback); sondern nur das:
  DoSomething(Callback); Fehler? Oder was mach ich falsch. Dem allgemeinen Verständnis nach müsste deine Version richtig sein.

Rainer
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#28

Re: Was ist eine Callback Funktion

  Alt 31. Mär 2006, 08:27
Bei mir funktioniert beides. Aber eigentlich sollte, wenn ich es mir genau überlege, nach Elvis Methode nur zweitere funktionieren, da kein Zeiger mehr erwartet wird.

Eventuell sollte man es so machen:
Delphi-Quellcode:
function CallBack(i: Integer): Boolean; stdcall;
begin
  result := True;
  ShowMessage(IntToStr(i));
  if i = 5 then
    result := False;
end;

type
  TCallbackProc = function(i: Integer): Boolean; stdcall;
  PCallbackProc = ^TCallbackProc;

procedure DoSomething(cbp: PCallbackProc); stdcall;
var
  i: Integer;
  CallbackProc: TCallbackProc;
begin
  if Assigned(cbp) then
  begin
    @CallbackProc := cbp;
    for i := 0 to 9 do
      if not CallBackProc(i) then
        break;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  DoSomething(@Callback);
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#29

Re: Was ist eine Callback Funktion

  Alt 31. Mär 2006, 08:53
Zitat von Luckie:
Bei mir funktioniert beides.
Hängt vom jeweiligen Compiler und dessen aktuellen Optionen ab.
Dadurch entstehen Codefragmente wie dieses:
Delphi-Quellcode:
DllProcNext := TDLLProc(DllProc);
TDLLProc(DllProc) := LibraryProc;
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#30

Re: Was ist eine Callback Funktion

  Alt 31. Mär 2006, 09:20
Wie wäre es denn jetzt korrekt? Bzw. wie macht es Windows? Da wird ja auch immer ein zeiger erwartet.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 23:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz