AGB  ·  Datenschutz  ·  Impressum  







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

Thread startet execute nicht

Ein Thema von Murkas · begonnen am 22. Mai 2013 · letzter Beitrag vom 26. Mai 2013
 
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.487 Beiträge
 
Delphi 12 Athens
 
#12

AW: Thread startet execute nicht

  Alt 24. Mai 2013, 14:19
Mein Delphi warnt, compiliert aber und hält am Breakpoint in der TCheckThread.execute-Methode an.
Code:
[DCC Warnung] Unit4.pas() H2365 Schreibweise der Überschreibe-Methode TCheckThread.execute muss exakt ihrem Vorfahren TThread.Execute entsprechen
Also wirklich helfen tut davon nichts.
Was hast du den davon überprüft, ich bin weiterhin der Meinung das der Fehler in dieser Richtung zu suchen ist.

Die Struktur deiner Daten scheint mir für den Anwendungsfall ungeeignet.
Durch geschickte Optimierung könnte man den Ablauf sicher um den Faktor 100 beschleunigen.
Das ist sinnvoller als bei diesem Entwicklungsstand bereits auf Threads zu setzen.

Auf jeden Fall solltest du auf "Goto" verzichten.
Ein Vorschlag ohne jetzt zu viel zu verändern:
Delphi-Quellcode:
function TCheckThread.IncCountArray(var countarray: tcountarray) : Boolean;
var
  n: Integer;
begin
  for n := 15 downto 0 do
  begin
    countarray[n] := countarray[n] + 1;
    if countarray[n] < Length(Freforgestringarray[n]) then
    begin
      Result := True;
      Exit;
    end;
    countarray[n] := 0;
  end;
  Result := False;
end;

function TCheckThread.IsCountArrayValid(const countarray: tcountarray) : Boolean;
var
  n: Integer;
begin
  for n := 15 downto 0 do
  begin
    if countarray[n] >= Length(Freforgestringarray[n]) then
    begin
      Result := False;
      Exit;
    end;
  end;
  Result := True;
end;

procedure TCheckThread.getbestreforgeid;
var
  q:integer;
  currentstring:string;
  countarray:tcountarray;
  points:integer;
  oldpoints:integer;
  oldresult:string;
begin
  oldpoints := 0;
  oldresult := '00000000000000000000000000000000';

  countarray := Fstartcountarray;
  if IsCountArrayValid(countarray) then
  begin
    repeat

      currentstring:='';
      for q := 0 to 15 do
        currentstring := currentstring + Freforgestringarray[q][countarray[q]];
      //showmessage(currentstring);
      //memo2.Lines.Add(currentstring);
      points := calcpoints(currentstring);
      if oldpoints < points then
      begin
        oldpoints := points;
        oldresult := currentstring;
      end;
      if currentstring=Fendstring then
        Break;
      //form1.Memo2.Lines.Add('shortmessage');

    until not IncCountArray(countarray);
  end;

//form1.Memo2.lines.Add('thread done says thread '+inttostr(Fresultpoints));
//showmessage('thread done says thread '+inttostr(Fresultpoints));
  resultpoints := oldpoints;
  resultstring := oldresult;
end;

procedure TCheckThread.Execute;
begin
//Fresultpoints:=0;
//showmessage('thread started '+Fendstring);
  getbestreforgeid;
  threaddone:=true;
//form1.Memo2.Lines.Add('thread done says thread '+inttostr(Fresultpoints));
end;
  Mit Zitat antworten Zitat
 

 

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 10:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz