AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Bekomme einfach kein globales "Array of Record" hin....
Thema durchsuchen
Ansicht
Themen-Optionen

Bekomme einfach kein globales "Array of Record" hin....

Ein Thema von JBJHJM · begonnen am 28. Sep 2009 · letzter Beitrag vom 30. Sep 2009
Antwort Antwort
Seite 1 von 2  1 2      
JBJHJM

Registriert seit: 16. Jan 2009
88 Beiträge
 
Delphi 2005 Personal
 
#1

Bekomme einfach kein globales "Array of Record" hi

  Alt 28. Sep 2009, 21:10
Habe schon einige Treads durchgelesen, bekomme es aber trotzdem nicht hin.

Delphi-Quellcode:
TProfil = record
    Name, Option1, Option2 : String;
    Wert: integer;
  end;

Profilspeicher = Array[1..30] of TProfil;

TSpeicher = class
  private
    FProfilspeicher: Profilspeicher;
    function Get(Index: Integer): string;
    procedure Put(Index: Integer; S: string);
  public
    property PProfilspeicher: Profilspeicher read Get; //Hier ist der aktuelle Fehler!!
  end;

...

implementation

function TForm13.Get(Index: Integer): string;
procedure TForm13.Put(Index: Integer; S: string);
An der genannten Stelle, an der ich die Funktion Get dem auslesen zuweisen will, sagt er, Get und Profilspeicher sind inkompatible Typen.
Vermutlich mache ich nur wieder einen weiteren blöden Denkfehler, aber ich komme einfach nicht dahinter.

Wenns total falsch ist, wie mache ich es dann?
Mein Ziel ist es, ein allen Units zugängliches Array von einem Record zu erstellen...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Bekomme einfach kein globales "Array of Record"

  Alt 28. Sep 2009, 21:13
Schau mal, was Get zurückgibt

[edit] Übrigens: willst Du das ganze Array oder ein einzelnes Element zurückgeben? Das wird mir aus dem Code nicht klar. [/edit]
[edit2] Schau mal hier: http://www.delphipraxis.net/internal...=712970#712970 [/edit2]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
JBJHJM

Registriert seit: 16. Jan 2009
88 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Bekomme einfach kein globales "Array of Record"

  Alt 28. Sep 2009, 21:43
Ich sags ja, wie immer zu blöd, sowas selber zu erkennen
Es soll letztendlich nur ein Element des Arrays übergeben werden, allerdings habe ich das momentan noch vernachlässigt, das kommt dann, wenn er beim Kompilieren keine Fehler mehr anzeigt...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Bekomme einfach kein globales "Array of Record"

  Alt 28. Sep 2009, 21:46
Dann schau Dir meinen Link von oben in Ruhe an. Übrigens, wenn Du den Record auch noch in einer typisierten Datei speichern willst, solltest Du die Strings im Record als ShortStrings deklarieren, da sonst nur der Zeiger gespeichert wird und nicht der String selbst.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Bekomme einfach kein globales "Array of Record"

  Alt 28. Sep 2009, 22:25
Hier liegt ein besonderes Property vor; nämlich ein Array-Propery.
Delphi-Quellcode:
TProfil = record
    Name, Option1, Option2 : String;
    Wert: integer;
  end;

Profilspeicher = Array[1..30] of TProfil;

TSpeicher = class
  private
    FProfile: Profilspeicher;
    function GetProfile(Index: Integer): TProfil;
    procedure SetProfile(Index: Integer; P:TProfil);
  public
    property Profile[Index:Integer]: TProfil read GetProfile write SetProfile;
  end;

function TSpeicher.GetProfile(Index: Integer): TProfil;
begin
  if (Index >= Low(FProfile)) and (Index<=High(FProfile)) then
    Result := FProfile[index]
  else
    raise ERangeError.Create('ungültiger Index TSpeicher.Profile['+IntToStr(Index)+']');
end;
Am Besten du lässt zunächst die Methoden GetProfile und SetProfile weg und drückst dann STRG+C.
Delphi generiert dann automatisch dir richtigen Methodenrümpfe.
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Bekomme einfach kein globales "Array of Record"

  Alt 29. Sep 2009, 08:29
Muss da hinter die Property-Deklaration nicht noch ein default?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.116 Beiträge
 
Delphi 12 Athens
 
#7

Re: Bekomme einfach kein globales "Array of Record"

  Alt 29. Sep 2009, 08:34
Nein, muß nicht ... kann aber
bei einem Array-Property bedeutet das Default nur, daß man in der Klasse ohne den PropertyNamen auf das Array zugreifen kann.

praktisch statt Speicher.Profile[i] nur Speicher[i]
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Bekomme einfach kein globales "Array of Record"

  Alt 29. Sep 2009, 08:36
Zitat von DeddyH:
Muss da hinter die Property-Deklaration nicht noch ein default?
Jupp, wäre empfehlenwert, um die verkürzte Schreibweise benützen zu können:
Delphi-Quellcode:
var speicher : TSpeicher;
begin
  speicher.Profile[5] := ...; // normal
  speicher[5] := ...; // verkürzte Schreibweise mit default array property
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Bekomme einfach kein globales "Array of Record"

  Alt 29. Sep 2009, 08:52
Ich wusste doch, da war sowas
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
JBJHJM

Registriert seit: 16. Jan 2009
88 Beiträge
 
Delphi 2005 Personal
 
#10

Re: Bekomme einfach kein globales "Array of Record"

  Alt 29. Sep 2009, 13:11
Vielen Dank, funktioniert so weit, werde trotzdem noch ein wenig rumprobieren...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:07 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