Autor Beitrag
Adrian
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 314



BeitragVerfasst: Di 26.05.09 12:27 
Servus!

Mir stellt sich das Problem, daß ich mit einer DLL arbeite, die mir eigentlich einen Datensatz in Form eines Strings zurückgibt. Leider weiß ich im Voraus nicht, wann das der Fall ist. Mache ich es so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
function SendString(AnschlussNr : Integer): PChar; stdcall; external 'S_COMM.dll';
...
Ergebnis := SendString(AnschlussNr);
ShowMessage('S_COMM-Daten: ' + Ergebnis);
if pos('?', Ergebnis) > 0 then Abbruch := True;


dann habe ich das Problem, daß mein Programm so lange an der Stelle "Ergebnis := ..." stehen bleibt, bis die Daten da sind. Und das kann dauern...
Ich bräuchte nun eine Möglichkeit, mit der ich feststellen kann, ob neue Daten da sind, so daß ich ggfs. den Abruf zu einem späteren Zeitpunkt durchführen kann. Und da stehe ich momentan voll auf dem Schlauch, wie ich das realisieren soll. So was in der Art wie:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
Ergebnis := SendString(AnschlussNr);
if Ergebnis = ''
then
  mache dieses
else
  mache jenes...


Noch eine Anmerkung zur DLL: Es ist so, daß wirklich nur die SendString-Funktion zur Verfügung steht. Entweder gibt sie Daten raus (ggfs. ein Fragezeichen wenn Probleme auftraten) oder es kommt gar nichts.

Gruß,

Adrian
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Di 26.05.09 12:31 
Die wirst den Abruf der Daten in Thread auslagern müssen.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)