Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi SUM-Funktion mag kein dynamisches array (https://www.delphipraxis.net/53120-sum-funktion-mag-kein-dynamisches-array.html)

messie 10. Sep 2005 16:42


SUM-Funktion mag kein dynamisches array
 
Hallo,

würde gerne die SUM-Funktion oder eine vergleichbare (Mean, StdDev) mit einem dynamischen array verwenden. Das motzt der Compiler aber an, will nur statische arrays. Gibt es Alternativen? Kann ja nur mit der Art der Speicherzuweisung zu tun haben, den auch mit einem statischen array weiß die Funktion ja noch nicht, wie groß das array ist. Ich würde aber gerne aus Geschwindigkeitsgründen die Assembler-Routinen nutzen.

Grüße, Messie

marabu 10. Sep 2005 17:06

Re: SUM-Funktion mag kein dynamisches array
 
Hallo messie,

zumindest in D7 geht das problemlos:

Delphi-Quellcode:
var
  da: array of double;
  d: double;
  i: integer;
begin
  SetLength(da, 6);
  for i := Low(da) to High(da) do
    da[i] := i * 123.3;
  d := Sum(da);
  ShowMessage(FloatToStr(d));
end;
Grüße vom marabu

BlackJack 10. Sep 2005 17:14

Re: SUM-Funktion mag kein dynamisches array
 
[OT]gibt es eine solche funktion wie Sum() eigentlich auch mit der funktionalität von Min() oder Max()?[/OT]

messie 10. Sep 2005 17:36

Re: SUM-Funktion mag kein dynamisches array
 
Zitat:

Zitat von marabu
Hallo messie,

zumindest in D7 geht das problemlos:

Delphi-Quellcode:
var
  da: array of double;
  d: double;
  i: integer;
begin
  SetLength(da, 6);
  for i := Low(da) to High(da) do
    da[i] := i * 123.3;
  d := Sum(da);
  ShowMessage(FloatToStr(d));
end;
Grüße vom marabu

Nee, genau das geht nicht, auch mit mean nicht. Vielleicht kannst Du mir einfach mal Deine math.pas schicken und ich vergleiche das mal?

Danke, Messie

@ BlackJack: Bei D6 heißen die MinValue und MAxValue, auch in math.pas

marabu 10. Sep 2005 17:54

Re: SUM-Funktion mag kein dynamisches array
 
Hallo messie,

so gerne ich dir helfe, aber den Quelltext einer Borland-Unit weitergeben darf ich nicht. Für zero knowledge Ansätze stehe ich gerne zur Verfügung: Die Implementierung umfasst 27 Instruktionen.

marabu

messie 10. Sep 2005 19:52

Re: SUM-Funktion mag kein dynamisches array
 
Ja, bei mir waren es auch 27. Danach habe ich Dein Beispiel nochmal 1:1 ausprobiert in einem neuen Programm.

Ich habe das Problem beheben können: ein Bug in der Compiler-Fehlermeldung! Ich hatte nicht gesehen, daß ich ein ein array of real hatte und auch Deinen Quelltext damit benutzt. Meldung:
Zitat:

[Fehler] Unit1.pas(35): Inkompatible Typen: 'Array' und 'dynamic array'
Hat - glaube ich - einen geschichtlichen Hintergrund.

Danke, Messie


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 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