AGB  ·  Datenschutz  ·  Impressum  







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

TThread : Array als Parameter

Ein Thema von bwolf · begonnen am 25. Feb 2008 · letzter Beitrag vom 25. Feb 2008
Antwort Antwort
bwolf

Registriert seit: 17. Jan 2006
368 Beiträge
 
Delphi 2009 Professional
 
#1

TThread : Array als Parameter

  Alt 25. Feb 2008, 12:34
Hi Leute,

ich möchte ein TThread-Object erstellen und diesem einen Array als Parameter übergeben, in dem ich den construcutor überschreibe:

Delphi-Quellcode:
type TPrintAntrag=class(TThread)
     constructor create(s: array of string);
     protected
      procedure execute; override;
     private
      Fs: array[0..100] of string;
end;



constructor TPrintAntrag.create(s: array of string);
begin
  Fs:=s; // FEHLER : "Incompatible types"
  Freeonterminate:=true;
  inherited create(false);
end;

procedure TPrintAntrag.execute;
begin
  // mach irgendwas
end;


// Befüllen des Arrays und starten des Threads
procedure TForm1.Button1Click(Sender: TObject);
var
  meinArray : array[0..100] of string;
  i : integer;
begin
  for i := 0 to 100 do
    meinArray[i] := intToStr(i);

  TPrintAntrag.create(meinArray);
end;

Problem: bei der Zuweisung Fs:=s; im constructor erhalte ich den Fehler
"[Error] Unit1.pas(102): Incompatible types"

Was mache ich verkehrt?
Danke für eure Hilfe,
gruß ben
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: TThread : Array als Parameter

  Alt 25. Feb 2008, 12:43
Die Fehlermeldung ist schon sehr aussagekräftig: Du versuchst ein dynamisches Array einem Array mit konstanter Länge zuzuweisen.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#3

Re: TThread : Array als Parameter

  Alt 25. Feb 2008, 12:44
Hai bwolf,

ein Array of String ist ja nicht das selbe wie ein array[0..100] of String.

Das eine ist dynamisch das andere hat eine feste grösse. Ich würde mir einen Typ für das Array anlegen und diesen verwenden.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
bwolf

Registriert seit: 17. Jan 2006
368 Beiträge
 
Delphi 2009 Professional
 
#4

Re: TThread : Array als Parameter

  Alt 25. Feb 2008, 12:52
Hi hi und erstmal danke für die wie immer sehr schnellen antworten.

Allerdings verstehe ich eure erklärung nicht ganz

Delphi-Quellcode:
Fs: array[0..100] of string;
meinArray : array[0..100] of string;
...sind doch beides Arrays mit einer festen länge
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: TThread : Array als Parameter

  Alt 25. Feb 2008, 12:53
Aber den Type hat Du nicht im Constructor angegeben:
constructor create(s: array of string);
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#6

Re: TThread : Array als Parameter

  Alt 25. Feb 2008, 12:54
Code:
type TPrintAntrag=class(TThread)
     constructor create(s: array of string);
     protected
      procedure execute; override;
     private
[b]     Fs: array[0..100] of string; [/b]
end;



constructor TPrintAntrag.create(s: [b]array of string[/b]);
begin
  Fs:=s; // [color=red]FS ist Array[0.100] of String - s ist Array of String[/color]
  Freeonterminate:=true;
  inherited create(false);
end;
Edit: Der Union drängelt sich immer vor
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
bwolf

Registriert seit: 17. Jan 2006
368 Beiträge
 
Delphi 2009 Professional
 
#7

Re: TThread : Array als Parameter

  Alt 25. Feb 2008, 12:59
ok, danke...

Also die einfachste Möglichkeit ist, ein Typ für das Array anzulegen, oder was gäbe es noch für möglichkeiten?
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: TThread : Array als Parameter

  Alt 25. Feb 2008, 13:06
Ich würde in einem Thread nicht mit direkter Zuweisung arbeiten. Besser wäre der Übertrag des Quellarrays an das Array im Thread:
Delphi-Quellcode:
type TStringArray : Array of string;
...
private
  Fs : TStringArray;
...
constructor TPrintArray.Create(AInputArray : TStringArray);
var
  i;
begin
  inherited Create(True); // Suspended starten und
  FreeOnTerminate := True; // erst dann auf properties zugreifen
  SetLength(Fs, Length(AInputArray))
  for i := Low(AInputArray) to high(AInputArray) do
    Fs[i] := AInputArray[i];
  // Hier dann den Thread starten
  Resume;
end;
Und der inherited Aufruf MUSS zuerst kommen sonst knallts.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: TThread : Array als Parameter

  Alt 25. Feb 2008, 13:09
Zitat von Union:
Und der inherited Aufruf MUSS zuerst kommen sonst knallts.
Das stimmt zwar nicht. Aber schaden tut es auch nicht.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Macci

Registriert seit: 31. Mai 2007
129 Beiträge
 
#10

Re: TThread : Array als Parameter

  Alt 25. Feb 2008, 14:06
Zitat von bwolf:
ok, danke...

Also die einfachste Möglichkeit ist, ein Typ für das Array anzulegen, oder was gäbe es noch für möglichkeiten?
Mit einem Pointer müsste es auch gehen
Eine wichtige Frage ist aber: Willst du das Array während dem Thread verändern? Wenn ja, wie sollen sich die Änderungen auswirken?
  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:21 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