AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Probleme mit String-Deklarationen in Threads
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit String-Deklarationen in Threads

Ein Thema von Ironarrow · begonnen am 6. Apr 2004 · letzter Beitrag vom 6. Apr 2004
Antwort Antwort
Ironarrow

Registriert seit: 23. Mär 2004
Ort: Kerpen
16 Beiträge
 
Delphi 7 Professional
 
#1

Probleme mit String-Deklarationen in Threads

  Alt 6. Apr 2004, 12:53
Hallo zusammen.

Ich bin zwar kein Anfänger im Bereich Delphi-Programmierung, jedoch beabsichtige ich in einem Programm nun
Threads zu verwenden und habe das bisher noch nie gemacht.

Kurz eine Erläuterung was ich vorhabe:

Programm A bekommt über TCP/IP einen Dateinamen XY genannt, worauf hin die Programm diese Datei
abarbeiten soll. Für die Abarbeitung dieser Datei wird ein Programm B mit der Datei XY als
Parameter gestartet. (WinExecAndWait)

Treffen nun mehrere Anfragen zeitgleich ein, so wird durch die Verwendung von WinExecAndWait
immer eine Datei nach der anderen abgearbeitet. Ziel ist es jedoch mehrere Dateien "parallel"
zu bearbeiten.

Daher soll der Aufruf von Programm B in einem Thread erfolgen.

Hier das Ereigniss der TCP-IP Serve-Komponente innerhalb von Programm A.

Delphi-Quellcode:
procedure Tfrm_startup.TCP_ServerData(Sender: TObject; Socket: Integer);
  var
   ScreenDatei   : String;
   AWThread   : TAWThread;

  begin
   ScreenDatei := TCP_Server.Read(Socket);   // Dateiname empfangen
   AWThread.Create(Screendatei,tpNormal);   // Auswertung starten

   while not AWThread.Terminated do
      Application.ProcessMessages;

   AWThread.Free;

   TCP_Server.Write(Socket, 'Fertig' + Chr(0));   { Dateiname zurücksenden incl. End-Zeichen #0 }
  end;
Programm A empfängt den Dateinamen, übergibt diesen an den neu erzeugten Thread und wartet dann so lange,
bis der Thread fertig ist. Anschließend wird der Text "Fertig" zurück über TCP-IP gesendet, um zu signalisieren,
dass die Datei XY abgearbeitet wurde.

Der Thread sieht jetzt wie folgt aus:

Delphi-Quellcode:
interface

uses
  Classes, Windows;

type
   TAWThread = class (TThread)
   private
      FDateiname   : String;
   protected
      Terminated : boolean;
      procedure Execute; override;
   public
      constructor Create(Dateiname : String; ThreadPriority: TThreadPriority);
   end;

implementation

uses
  IniFiles, NameDev, Type_Dev, Global ;

constructor TAWThread.Create(Dateiname : String; ThreadPriority: TThreadPriority);
  begin
   inherited Create(False);      { Thread als aktiv und nicht als Suspended starten }
   Priority := ThreadPriority;
   Terminated := False;      { Thread wurde beendet }
(1)   FDateiname := Dateiname;
  end;

procedure TAWThread.Execute;
  var
   IniFile   : TIniFile;
   sProgDir   : String;
   sProg   : String;

  begin
//.....
//..... INI-Dateien lesen und Strings aufbereiten

   WinExecAndWait(sProgDir + sProg, SW_SHOWMAXIMIZED);   { Datei abrarbeiten }
   Terminate;               { Thread beenden }
   Terminated := True;            { Thread wurde beendet }
  end;
Ich habe jetzt zwei Fragen:
Zum einen: Warum kann ich bekomme ich immer eine Zugriffsverletzung beim Befehl (1) (String-Zuweisung)
Zum anderen: Ist der Rest des Programms richtig ??

Ich meine: Wird der Programmteil Executed automatisch nach dem Create aufgerufen ?? Und ist die Art und Weise
wie ich versuche Festzustellen, ob der Thread durchlaufen ist, richtig ??

Ich hoffe, ich habe mein Problem halbwegs nachvollziehbar erklärt und Ihr könnt mir helfen.

Vielen Dank schon mal.

mfg.

Rainer
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Newbie versucht sich an Threads

  Alt 6. Apr 2004, 12:57
Was soll denn das jetzt? Du hast doch schon einen Thread mit identischen Topic aufgemacht. Bitte bennen um und gib ihnen sinnvolle Titel. Danke.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Ironarrow

Registriert seit: 23. Mär 2004
Ort: Kerpen
16 Beiträge
 
Delphi 7 Professional
 
#3

Re: Probleme mit String-Deklarationen in Threads

  Alt 6. Apr 2004, 13:13
Sorry Lucky.

Habe ausversehen bei der Eingabe Alt + S gedrückt gehabt. Die ESC-Taste kam wohl auch zu spät.

Habe mir Dein Tutorial schon heruntergeladen und lasse es gerade ausdrucken.

Ich weiß aber (noch) nicht, ob es mir bei meinem Problem helfen wird.

I hope so.

Gruß,

Rainer
  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 22:32 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