Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Vergleich Basic DATA Datentyp (https://www.delphipraxis.net/102603-vergleich-basic-data-datentyp.html)

Manfred12037 31. Okt 2007 20:30


Vergleich Basic DATA Datentyp
 
Hallo,

ich muß ein kleines Programm in Delphi schreiben, das ein Interpolationspolynom berechnet. Jetzt habe ich ein ganz altes Buch gefunden, wo das Problem mit Basic programmiert wurde. Hier wurde der Datentyp DATA verwendet.Also in der Art: DATA:1,2,3,10,8,9,0.3,...usw. und dann Read....

Wie kann ich eine große Datenmenge im Delphiprogramm auf ähnliche Art eingeben? Ich könnte natürlich auch eine txt Datei erstellen u. diese in ein Array einlesen, aber wenn ich es direkt in Delphi eingebn will, ohne dass ich umständlich definieren muss wieviele Zahlen einzugeben sind (da die Menge der einzugebenden Daten immer verschieden ist)?

mkinzler 31. Okt 2007 20:38

Re: Vergleich Basic DATA Datentyp
 
Sollte als Konstante möglich sein.

Manfred12037 31. Okt 2007 21:06

Re: Vergleich Basic DATA Datentyp
 
und wie genau?

mkinzler 31. Okt 2007 21:14

Re: Vergleich Basic DATA Datentyp
 
Delphi-Quellcode:
const
   Data: Array of Byte[] := (... );

Manfred12037 1. Nov 2007 10:23

Re: Vergleich Basic DATA Datentyp
 
Danke----Habe es nun so probiert, u. funktioniert soweit:

procedure TForm1.Button1Click(Sender: TObject);
const
Digits: array[0..1] of Integer = (5,1);
var
a:integer;
begin
a:=Digits[0];
edit1.Text:=IntToStr(a);
end;


Aber ich muß bei Array immer genau die richtige Anzahl eingeben, zb bei 5 Elementen array[0..4]. D.H. ich muss jedesmal abzählen wieviele Daten einzugeben sind (hier z.B. 5). Basic ist zwar alt, aber in diesem speziellen Fall mit dem DATA u. Read Befehl komfortabler.
Aber vielleicht gibts doch noch etwas dies zu bewerkstelligen?

Deep-Sea 1. Nov 2007 10:30

Re: Vergleich Basic DATA Datentyp
 
Zitat:

Zitat von Manfred12037
Aber ich muß bei Array immer genau die richtige Anzahl eingeben, zb bei 5 Elementen array[0..4]. D.H. ich muss jedesmal abzählen wieviele Daten einzugeben sind (hier z.B. 5). Basic ist zwar alt, aber in diesem speziellen Fall mit dem DATA u. Read Befehl komfortabler.
Aber vielleicht gibts doch noch etwas dies zu bewerkstelligen?

Var-Array mit SetLength auf die gewünschte Länge setzen?!

Manfred12037 1. Nov 2007 10:54

Re: Vergleich Basic DATA Datentyp
 
Da muß ich aber weiterhin die Anzahl der einzugebenden Daten wissen?!

Deep-Sea 1. Nov 2007 10:57

Re: Vergleich Basic DATA Datentyp
 
Jain. Wenn du einen Eintrag hinzufügen willst, kannst du das Array um eins vergrößern.
Ist es denn ein Problem, die anzahl zu kennen? Woher kommen die Daten?
(Oder hab ich was verpasst und du hast es bereits erwähnt?)

Manfred12037 1. Nov 2007 11:04

Re: Vergleich Basic DATA Datentyp
 
Die Datenanzahl ist jedesmal anderst. Deshalb müßte ich jedesmal die Anzahl der einzugebenden Daten wissen....

Deep-Sea 1. Nov 2007 12:05

Re: Vergleich Basic DATA Datentyp
 
Ya woher kommen denn die Daten? Und wo sollen sie hin? Schwenk doch mal für mich bitte etwas aus, damit ich nicht 100 einzelne Fragen stellen muss :-D ...

Manfred12037 1. Nov 2007 18:43

Re: Vergleich Basic DATA Datentyp
 
Du bist ja ganz schön neugierig......- nagut. Die Daten kommen von einer Reifenmessung bei der die elastische Formänderung eine Funktion der Belastung ist. d.h. diese Iberechnete Interpolationspolynom kann ich dann in Ansys für eine FEM Berechnung hernehmen. Die Daten sind abhängig vom Reifentyp, daher sind die Datenmengen in deren Anzahl u. Größe immer anderst.....

jbg 1. Nov 2007 18:59

Re: Vergleich Basic DATA Datentyp
 
Wenn es dir unbedingt wichtig ist, dass du die Anzahl der Zahlen nicht ermitteln willst, kannst du das auch mit einer Hilfsfunktion umgehen:
Delphi-Quellcode:
type
  TDynDoubleArray = array of Double;

function DoubleArrayOf(const Args: array of Double): TDynDoubleArray;
var
  I: Integer;
begin
  SetLength(Result, Length(Args));
  for I := 0 to High(Args) do
    Result[I] := Args[I];
end;

var
  Data: array[0..2] of TDynDoubleArray;
  {...}

procedure TForm1.FormCreate(Sender: TObject);
begin
  { Hier werden die "konstanten" Daten initialisiert }
  Data[0] := DoubleArrayOf([1, 2, 3, 10, 8, 9, 0.3]);
  Data[1] := DoubleArrayOf([5.6, 3, 7, 1, 5, 12]);
  Data[2] := DoubleArrayOf([2.8, 6]);
  {...}
end;

Manfred12037 1. Nov 2007 19:50

Re: Vergleich Basic DATA Datentyp
 
Ja, klingt ganz gut die Lösung. Jetzt steht im Araay am Ende Data=((1, 2, 3, 10, 8, 9, 0,3), (5,6, 3, 7, 1, 5, 12), (2,8, 6)). Ich muß für die Rechnung die einzelnen Werte auch aus dem Data auslesen können mit einem Index, d.h. z.B. die Zahl 10 in der ersten Klammer mit deren laufendem Index 4 od. die Zahl 8 mit deren laufendem Index 5 usw.?

Manfred12037 2. Nov 2007 09:26

Re: Vergleich Basic DATA Datentyp
 
d.h. wie kann ich die Daten aus DATA auslesen?

jbg 2. Nov 2007 09:52

Re: Vergleich Basic DATA Datentyp
 
Das ist immernoch ein Array, das man über arrayname[Index] auslesen kann. Und da es sich hierbei um ein Array in einem Array handelt, muss man eben zwei Indizes angeben.
Delphi-Quellcode:
d := Data[DataIndex][Index];
d := Data[DataIndex, Index]; // ist auch möglich

Manfred12037 2. Nov 2007 10:03

Re: Vergleich Basic DATA Datentyp
 
Jetzt klappt es! Besten Dank für die prompte und professionelle Hilfe!

Manfred12037 2. Nov 2007 10:04

Re: Vergleich Basic DATA Datentyp
 
Jetzt klappt es! Besten Dank für die schnelle u. professionelle Hilfe!

Manfred12037 2. Nov 2007 10:09

Re: Vergleich Basic DATA Datentyp
 
Besten Dank für die schnelle u. professionelle Hilfe!


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