AGB  ·  Datenschutz  ·  Impressum  







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

FOR-Schleifen Problem

Ein Thema von delphinub23 · begonnen am 30. Mär 2011 · letzter Beitrag vom 30. Mär 2011
 
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#15

AW: FOR-Schleifen Problem

  Alt 30. Mär 2011, 15:14
Da finde ich die Listen-Variante doch besser, weil bei dieser (#15) Variante hier der Computer vor allem bei den letzten Feldern überproportional lange braucht (wirkt sich zwar erst bei viel viel mehr Zahlen aus, aber egal). Ein weiterer Punkt, der für die Listenvariante spricht ist, dass das Sortieren per Quicksort geschieht (also wunderbar schnell) und das Auftreten eventueller Fehler im Quelltext ist viel unwahrscheinlicher. Außerdem kann man bei einer Liste auch genau bestimmen, welche Elemente man haben will und welche nicht.

Bernhard

ADD: Dann auch ein Snippet von mir:

Delphi-Quellcode:
type
  TDasArray = array[0..15] of integer;

function Zufallsarray(): TDasArray;
  function RandomSort(Item1, Item2: Pointer): Integer;
  var
    DummyArray: array[0..1] of Integer; // Wird benötigt, da Delphi sonst nicht zurechtkommt (doppeldeutiger Funktionsaufruf)
  begin
    DummyArray := [-1, 1]; // Hoffe das geht so ;)
    Result := RandomFrom(DummyArray);
  end;

var
  Liste: TList;
  i: INteger;
begin
  Liste := TList.Create;
  try
    try
      // Füllen:
      for i := 0 to 15 do
        Liste.Add(Pointer(i+1));

      // "Sortieren"
      Liste.Sort(RandomSort);

      // Jetzt noch das Array füllen
      for i := 0 to 15 do
        Result[i] := Integer(Liste[i]);

    except
      on E: Exception do
      begin
        // Irgendwo ein Fehler passiert? - 0-Array zurückgeben
        ZeroMemory(@Result, SizeOf(Result));
        raise E; // Exception nach oben weiter geben (benötigt??)
      end;
    end;
  finally
    // Ganz wichtig: Nachher aufräumen!
    Liste.Free;
  end;
end;
Das ist jetzt auch mit Speicherschutzblöcken hoffentlich 100% korrekt.
Bernhard
Iliacos intra muros peccatur et extra!

Geändert von rollstuhlfahrer (30. Mär 2011 um 15:24 Uhr)
  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 03:59 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 by Thomas Breitkreuz