AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Generelle Fragen zu TParallel.For
Thema durchsuchen
Ansicht
Themen-Optionen

Generelle Fragen zu TParallel.For

Ein Thema von a.def · begonnen am 27. Dez 2016 · letzter Beitrag vom 1. Jan 2017
Antwort Antwort
a.def
(Gast)

n/a Beiträge
 
#1

AW: Generelle Fragen zu TParallel.For

  Alt 1. Jan 2017, 15:02
Zitat:
Der Code, den du hier zeigst, ist ganz offensichtlich nicht der, den du ausführst.
Ehrlich gesagt, verstehe ich überhaupt nicht, wo das Problem ist. Das Splitten einer Liste in zwei nahezu gleich große Teile ist doch wirklich trivial.
Doch. So wie er da steht verwende ich ihn aktuell leider.

Auch wenn es sehr trivial zu sein scheint, bekomme ich es anders nicht hin

nahpets' Lösung scheint aber doch richtig zu sein oder?
In der ersten Schleife zählst Du von 0 bis zum berechneten Wert.

Mit diesem Wert beginnst Du die zweite Schleife. Die müsste aber beim ersten Wert hinter dem Ende der ersten Schleife beginnen.

Müsste es nicht eher so aussehen?
Delphi-Quellcode:
program Test;
var
        i : Integer;
        run1 : Integer;
        run2 : Integer;
        sl : TStringList;
begin
  sl := TStringList.Create;
  for i := 0 to 100 do sl.Add('');
  run1 := 0;
  run2 := 0;

  for i := 0 to (sl.Count div 2)-1 do Inc(run1); // hier habe ich -1 hinzugefügt

  for i := (run1 + 1) to sl.Count - 1 do Inc(run2);

  ShowMessage('Von ' + IntToStr(0) + ' bis ' + IntToStr(run1) + #13#10 + 'Von ' + IntToStr(run1 + 1) + ' bis ' + IntToStr(sl.Count - 1));
  sl.Free;
end.

Geändert von a.def ( 1. Jan 2017 um 15:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.771 Beiträge
 
Delphi 12 Athens
 
#2

AW: Generelle Fragen zu TParallel.For

  Alt 1. Jan 2017, 16:54
Was soll eigentlich das Hochzählen irgendwelcher Variablen bezwecken? Geht es nicht einzig darum, eine Liste in zwei separaten Schleifen zu durchlaufen, wobei
  1. die Anzahl Durchläufe möglichst gleich ist
  2. keine Einträge doppelt verarbeitet werden sollen

Dazu errechnet man die ungefähre Mitte (bei ungerader Anzahl geht das nicht genau auf): (sl.Count div 2) Dann lässt man die eine Schleife von 0 bis (sl.Count div 2) - 1 laufen und die zweite von (sl.Count div 2) bis slCount - 1 .

Mir ist nicht ganz klar, warum in deinem Beispiel die zweite Schleife bei run1 + 1 loslegt. Das ergibt doch gar keinen Sinn. Was hat der Zähler run1 mit den Schleifengrenzen bzw. der Aufteilung der Schleifen zu tun?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 03:27 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