Mehrfaches TFTP in Threads

    Mehrfaches TFTP in Threads

    Guten Tag,

    hier wieder eine reizvolle Frage:
    Ich habe eine selbstgeschribene DLL, in der ich auf mehrere TFTP-Clienten zugreifen kann.
    Die Funktionen sind nach außen "gezogen"

    Delphi-Code

    1. Z : array[1..N] of TidTrivialtftp;
    2. function getDaten(index:integer):PChar; stdcall;
    3. begin
    4. fname:=inttostr(index)+'_daten.txt' ;
    5. // Kernanweisung ist
    6. Z[index].Get('hallo.txt', filename);
    7. end;



    Es gibt ja zwei Versionen: a) wie oben mit lokalen Dateien und b) mit Streams.

    Das Problem : Werden mehr als ein Client per Thread zyklisch abgefragt, knallte nach kurzer Zeit.
    Soll heißen: Das Hostprogramm richtet einige Threads ein und läßt sie dann im Kreis kaufen.
    Ich bekomme eine Fehlermeldung, und zwar die übelste: "access violation in dll "dings.dll" u.s.w.
    Die Absicherung mit kritischen Sektionen im Hauptprogramm brachte gar nichts.
    Wenn man mal unterstellt, daß jeder Thread nur seinen Clienten bespielt, was kann dann in der DLL schiefgehen ?
    :help:
    Morgen ist Heute schon Gestern
    Also, mit diesem Codebeispiel ist das ziemlich unmöglich zu sagen. Wenn du nicht noch ganz viele andere Variablen global irgendwo definiert hast, dann compiliert das so nicht. Was ist filename? Was ist fname? Was passiert mit deinem Result? Was tust du mit dem (hier nicht gesetzten) Rückgabewert, sprich: Zeig am besten den ganzen Aufruf. Wie werden die Indys erzeugt/freigegeben?
    Deine Problembeschreibung hat mit dem Quelltext nicht wirklich viel zu tun.
    Master of the EDH ;)
    Sorry, war Teilnehmer der diesjährigen Erkältungsmeisterschaft.
    Das Problem ruht erstmal.
    Die Lage wurde wesentlich verbessert durch die Variable ISMULTITHREADED, die man anscheinend auch in der DLL auf true setzen muß.
    Der Grund scheint zu sein, daß ich API-Threads statt TThread verwende.
    ism
    Morgen ist Heute schon Gestern