Einzelnen Beitrag anzeigen

Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

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

AW: FOR-Schleifen Problem

  Alt 30. Mär 2011, 14: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 14:24 Uhr)
  Mit Zitat antworten Zitat