AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Datenaustausch zwischen einer Methode und einem Programm
Thema durchsuchen
Ansicht
Themen-Optionen

Datenaustausch zwischen einer Methode und einem Programm

Ein Thema von Chewie · begonnen am 26. Jul 2003 · letzter Beitrag vom 27. Jul 2003
Antwort Antwort
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#1

Datenaustausch zwischen einer Methode und einem Programm

  Alt 26. Jul 2003, 18:31
Ich habe gerade folgendes Problem:
Ich habe eine Methode, die u.a. die Dateien eines Verzeichnisses (inkl. Unterverzeichnisse, rekursiv) ermittelt. Und ich will den Fortschritt irgendwie (wahrscheinlich in einer Progressbar) darstellen. Da ich weder die rekursive Struktur aufheben will( und deswegen keine DoFirst/DoNext - Variante möglich ist) noch die Ausgabe in der Progressbar in die Klasse integrieren will, frage ich mich, wie ich am besten der Progressbar sage, dass sie ihre Position ändern soll.

Was ich favoriere, wäre, der Dateiscan-Methode einen Zeiger auf die Funktion/Prozedur, die die Progressbar verwaltet, zu übergeben, und die Funktion dann aufzurufen. Da der Datei-Scan Algo aber in einem seperaten Thread ablaufen soll, weiß ich nicht, ob es da probleme geben kann. Auch bin ich mir nicht ganz darüber im klaren, wie ich an die Prozedur, deren Zeiger ich hab, Parameter übergeben kann.

Wär super, wenn mir jemand helfen könnte.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
MSCH

Registriert seit: 8. Mai 2003
Ort: Berlin
42 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: Datenaustausch zwischen einer Methode und einem Programm

  Alt 27. Jul 2003, 13:35
Via Thread auf ein VCL Objekt zugreifen geht nur über die Synchronize() Methode des Threads.
Eine Übergabe von Parametern von Functionen könnte so laufen:

Code:
type
  TmyNewProc = procedure (max, position:Integer);
...
  myThread= Class(TThread)
    Proc: TmyNewProc; // nur Pointer !
    constructor Create(.., varTmyNewProc: TmyNewProc,..)
  ...

im Hauptprogramm Thread.Create(..) mit Procedure übergeben

constructor myThread.Create;
begin
  ...
  Proc:= varTmyNewProc;
  ...
end;

procedure myThread.Execute;
begin
  ...
  Synchronize(test);
  ...
end;

procedure MyThread.Test;
...
  Proc(80,8);
...
so aus'm Gedächtniss.


Übergebe dem Thread doch direkt die Progressbar. In der Execute() dass die Progressbar direkt aus dem Thread (Synchronize) aktualisieren.
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:17 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