AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [gelöst] Dynamische Records anlegen klappt nicht
Thema durchsuchen
Ansicht
Themen-Optionen

[gelöst] Dynamische Records anlegen klappt nicht

Ein Thema von Go2EITS · begonnen am 28. Jul 2006 · letzter Beitrag vom 28. Jul 2006
Antwort Antwort
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#1

[gelöst] Dynamische Records anlegen klappt nicht

  Alt 28. Jul 2006, 09:08
Hallo, DP!

Nun habe ich mal wieder ein Problem. Und schildere meine Vorgehensweise.
Ich möchte mal dyn. Records mit dyn. Feldern haben.

z. B.
Delphi-Quellcode:
type
  T = record
    Wr : Array of real;
    Wi : Array of integer;
    Ws : Array of String;
end;

Die Krux ist: Ich habe dyn. Arrays in einem dyn. Record.
Also lege ich den Record dyn. an:    var R:array of T; Als Erstes erstelle ich ein Record...
Delphi-Quellcode:
Procedure Record_Init;
begin
setlength(R,1);
end;
...um dann ein dyn. Feld zu erstellen:
Delphi-Quellcode:
procedure Record_ADD_Real(R:real);
begin
setlength(R[0].wr , 1)
end;
Aber da kommt der Fehler:
"Arraytyp erforderlich".

Was mache ich falsch? Hat jemand eine Lösung?
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Dynamische Records

  Alt 28. Jul 2006, 09:15
R ist ja in dem Fall auch kein Array, sondern ein Real-Wert. Ausserdem solltest Du Dir dein Array typisieren.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Dynamische Records

  Alt 28. Jul 2006, 09:15
Du verwendest zwei mal den Buchstaben "R" !!
Einmal als Übergabeparameter und einmal als
var R:array of T; Ich kann dir nur raten, deinen Variablen "anständige" Namen zu geben.
goldene Regel:
globale Variablen erhalten lange, sprechende Namen
lokale Variablen und übergabeparameter dürfen auch kurzen Namen mit nur einem Buchstaben erhalten.
Andreas
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#4

Re: Dynamische Records anlegen klappt nicht

  Alt 28. Jul 2006, 09:18
@Union
? R ist: VAR R:Array of T und somit ein Record und kein Realwert.
Der Realwert müsste mit R[1].WR angesprochen werden. Aber irgendwo ist
hier mein Fehler...

@shmia:
So mache ich eigentlich auch, nach der goldenen Regel. Im Test wollte ich übersichtlich arbeiten,
anscheinend erwirke ich das Gegenteil. - Aber R ist doch Array of T; Da muss ich doch R[1].WR ansprechen und nicht T[1].WR. Dies wäre doch gänzlich falsch.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Dynamische Records anlegen klappt nicht

  Alt 28. Jul 2006, 09:26
Lies doch mal die Antworten richtig:
Delphi-Quellcode:
procedure Record_ADD_Real(R:real);
begin
setlength(R[0].wr , 1)
end;
In Deinem Code übergibtst Du R als Real, und auf eine Real kannst Du Setlength nicht verwenden. Der Lokale Parameter ist in Deiner Funktion sichtbar und "überschreibt" die ausserhalb deklarierte Variable. Richtig wäre:
Delphi-Quellcode:
procedure Record_ADD_Real(RealNumber : real);
begin
  setlength(R[0].wr , length(R[0])+1) ;
  R[0]wr[High(wr)] := RealNumber;
end;
Und ändere Deine Variablennamen sowie die Einrückung, wie von shmia vorgeschlagen.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#6

Re: Dynamische Records anlegen klappt nicht

  Alt 28. Jul 2006, 09:45
@Union
Zitat:
Lies doch mal die Antworten richtig:
Wenn ich Deine Antwort verstanden hätte, hätte ich nicht gepostet.

Danke trotzdem für die ausführliche Lösung. Das R in der
procedure Record_ADD_Real(R:real); war der Grund. War ein "dummer" Fehler von mir.
CU!
  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 18:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz