AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Klassenchaos

Ein Thema von LWChris · begonnen am 29. Jul 2010 · letzter Beitrag vom 29. Jul 2010
Antwort Antwort
Benutzerbild von LWChris
LWChris

Registriert seit: 27. Jul 2010
Ort: Erkelenz
22 Beiträge
 
Turbo Delphi für Win32
 
#1

Klassenchaos

  Alt 29. Jul 2010, 06:36
Hallo,

kann mir jemand auf die Schnelle sagen, wo hier der Fehler liegt?
Ich bekomme in TAlbum.GetSC immer vor dem Songs einen Fehler E2066 Operator oder Semikolon fehlt

Delphi-Quellcode:
function TAlbum.GetSC: Integer;
begin
  result:=Length(<HIER>Songs);
end;


Bei allen anderen Klassen klappt alles; wenn ich Length(Songs) durch ein schlichte 0 ersetze, klappt es auch.

Delphi-Quellcode:
unit U_Tools;

interface

uses
  SysUtils, Classes, Links;

// Parameters
type
  TAlbumType = (atAlbum, atDoubleAlbum, atCompilation, atSingle, atEP, atBoxSet,
               atDisneyST, atMovieST, atMusicalST, atTVSeriesST, atVideoGameST);

// Forward declarations
  TAlbum = class;
  TSong = class;

// Classes
  TArtist = class
    Links: TLinks;
    Name: String;
    Albums: Array of TAlbum;
    Songs: Array of TSong;
    function GetAC: Integer;
    function GetSC: Integer;
    procedure AddAlbum(Album: TAlbum);
    procedure AddSong(Song: TSong);
    property AlbumCount: Integer read GetAC;
    property SongCount: Integer read GetSC;
  end;

  TAlbum = class
    Links: TLinks;
    Title: String;
    Year: String;
    Artist: TArtist;
    Songs: Array of TSong;
    AlbumType: TAlbumType;
    Length: Integer;
    Genre: String;
    function GetSC: Integer;
    procedure AddSong(Song: TSong);
    property SongCount: Integer read GetSC;
  end;

  TSong = class
    Links: TLinks;
    Title: String;
    Artist: TArtist;
    Albums: Array of TAlbum;
    function GetAC: Integer;
    procedure AddAlbum(Album: TAlbum);
    property AlbumCount: Integer read GetAC;
  end;

function FLetterUC(Title: String): String;

implementation

function FLetterUC(Title: String): String;
var a: Integer; NextLetterUC: Boolean;
begin
  result:=''; NextLetterUC:=True;
  for a:=1 to Length(Title) do
    begin
      if NextLetterUC then
        result:=result+AnsiUpperCase(Title[a])
      else
        result:=result+Title[a];
      NextLetterUC:=((Title[a]=' ') or (Title[a]='('));
    end;
end;

// ARTIST //

function TArtist.GetAC: Integer;
begin
  result:=Length(Albums);
end;

function TArtist.GetSC: Integer;
begin
  result:=Length(Songs);
end;

procedure TArtist.AddAlbum(Album: TAlbum);
begin
  SetLength(Albums,AlbumCount+1);
  Albums[AlbumCount-1]:=Album;
end;

procedure TArtist.AddSong(Song: TSong);
begin
  SetLength(Songs,SongCount+1);
  Songs[SongCount-1]:=Song;
end;

// ALBUM //

function TAlbum.GetSC: Integer;
begin
  result:=Length(Songs);
end;

procedure TAlbum.AddSong(Song: TSong);
begin
  SetLength(Songs,SongCount+1);
  Songs[SongCount-1]:=Song;
end;

// SONG //

function TSong.GetAC: Integer;
begin
  result:=Length(Albums);
end;

procedure TSong.AddAlbum(Album: TAlbum);
begin
  SetLength(Albums,AlbumCount+1);
  Albums[AlbumCount-1]:=Album;
end;

end.
Ich bin vollkommen ratlos
Chris
Software: schnell, effektiv, günstig. Wähle zwei.
  Mit Zitat antworten Zitat
Benutzerbild von LWChris
LWChris

Registriert seit: 27. Jul 2010
Ort: Erkelenz
22 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: Klassenchaos

  Alt 29. Jul 2010, 06:44
OMG ich habs gefunden Ich hab ein Attribut "Length" - und ich hab ehrlich 2 Stunden den Fehler gesucht deswegen

Nix für ungut. Sorry.
Chris
Software: schnell, effektiv, günstig. Wähle zwei.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Klassenchaos

  Alt 29. Jul 2010, 08:29
Für Andere, mit dem selben Problem.
Hier noch die unterschlagene Lösung:
* entweder man bennent das gleichnamige Feld oder eine gleichnamige Funktion/Prozedur um, hier das
Delphi-Quellcode:
TAlbum = class
  ...
  Length: Integer;
* oder man gibt einen Namespace mit an, also (das gewünschte "Length" liegt in der Unit System)
Delphi-Quellcode:
function TAlbum.GetSC: Integer;
begin
  result := System.Length(Songs);
end;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (29. Jul 2010 um 08:31 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Klassenchaos

  Alt 29. Jul 2010, 08:34
Alternativ kann man, was sich gerade bei der Eigenschaft "Length" anbietet, es auch als eine Property schreiben, die auf das private Feld FLength zugreift.

Jetzt ungetestet, aber das müsste auch gehen.

MfG
Fabian
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Klassenchaos

  Alt 29. Jul 2010, 08:48
ob nun ein direktes Feld "Length" oder ein Property "Length" ... in beiden Fällen wird das/die "Length" der Systemunit verdeckt
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#6

AW: Klassenchaos

  Alt 29. Jul 2010, 09:23
Ach mist, ich dachte bei Read-Only Properties funktioniert es. Wobei eigentlich ergibt es eher andersherum nur Sinn. Naja gut alternativ schreibe "Size"

MfG
Fabian
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von LWChris
LWChris

Registriert seit: 27. Jul 2010
Ort: Erkelenz
22 Beiträge
 
Turbo Delphi für Win32
 
#7

AW: Klassenchaos

  Alt 29. Jul 2010, 09:57
Da es bei mir um Zeiten geht, heißt es "Duration" Klar, auf "System.Length" hätte ich auch kommen können
Chris
Software: schnell, effektiv, günstig. Wähle zwei.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Klassenchaos

  Alt 29. Jul 2010, 09:58
Ach mist, ich dachte bei Read-Only Properties funktioniert es.
Nee, dann mekert Delphi nur, daß diesem nichts zugewiesen werden kann, falls man es versucht.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  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 09:18 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