AGB  ·  Datenschutz  ·  Impressum  







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

Installation einer Komponente

Ein Thema von smepal · begonnen am 20. Aug 2006 · letzter Beitrag vom 21. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von smepal
smepal

Registriert seit: 25. Okt 2005
Ort: Bechen
58 Beiträge
 
Delphi 2005 Personal
 
#1

Installation einer Komponente

  Alt 20. Aug 2006, 16:17
Also ich hab da ein Problem:
Ich habe mir eine Komponente geschrieben:
Delphi-Quellcode:
unit playlist;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Grids, StdCtrls, Buttons, ExtCtrls;

type
  TInfos = class
    Filename:string;
  public
    property Str:string read Filename write Filename;
  end;
type
 TTracks = record
  Title: String;
  time: String;
  path: String;
  no: Integer;
 end;




type
  TPlayList = class(TStringGrid)

  private
    function GetTracks(index:integer):TTracks; { Private-Deklarationen }
  protected

    { Protected-Deklarationen }
  public
  constructor Create (AOwner: TComponent); override;
  Procedure KeyDown(var Key: Word; Shift: TShiftState); override;
    { Public-Deklarationen }


  published
   procedure DeleteRow (RowNumber : Integer);
   procedure addFile (pfad, dauer, titel: String);
   procedure openM3u (m3u: String);
   procedure savem3u (m3u: String);
   property Track[index:integer]:TTracks read GetTracks;
   { Published-Deklarationen }
  end;

procedure Register;



implementation

constructor TPlaylist.Create(AOwner: TComponent);
var option: TGridOptions;
begin
inherited Create (AOwner);
options := [gorowselect] + [gocolsizing]+ [gofixedvertline] + [gofixedhorzline] + [govertline] + [gohorzline];

rowcount := 2;
 colcount := 3;
 fixedcols := 0;
 fixedrows := 1;
 defaultrowheight := 15;
 rowheights[0] := 18;
Cells[1,0] := 'Title';
Cells[2,0] := 'Length';
Cells[0,0] := 'No';
ColWidths[0] := 30;
colwidths[1] := 200;
colwidths[2] := 50;


end;

function TPlaylist.GetTracks (index: Integer): TTracks;
begin
Result.no := strtoint(cells[0, index]);
Result.Title:= cells[1, index];
  Result.time := cells[2, index];
  Result.path := cells[3, index];

end;

procedure TPlaylist.savem3u(m3u: String);
var i: Integer;
list: TStringlist;
begin
list := TStringlist.Create;
list.Add('#EXTM3U');
for i := 1 to rowcount-1 do
begin
list.Add('#EXTINF:'+cells[2,i]+','+ cells[1,i]);
list.Add(cells[3,i]);
end;
list.SaveToFile(m3u);
list.Free;
end;


procedure TPlaylist.openM3u (m3u: String);
var i, position: Integer;
 list: Tstringlist;
 path, time, title: String;
begin
list := TStringlist.Create;
list.LoadFromFile(m3u);

if list.Strings[0] = '#EXTM3Uthen
   begin
      for i := 0 to list.Count - 1 do
        begin
        position := ansipos ('#EXTINF:' , list.Strings[i]);
                 if position = 1 then
                 begin
                 time := copy(list.strings[i],9,3);
                 title := copy(list.strings[i],13,1000);
                 path := list.Strings[i+1];
                 addfile(path,time,title);
                 end;
        end;
end;
end;

procedure TPlaylist.addFile (pfad, dauer, titel: String);
var i: Integer;
mo: TInfos;
begin
rowcount := rowcount + 1;




mo:=TInfos.create;
    mo.Filename:='';
    Objects[rowcount-2,3]:=mo;


cells[1, rowcount-2] := titel;
cells[2, rowcount-2] := dauer;
cells[0,rowcount-2] := inttostr(rowcount - 2);
cells[3,rowcount-2] := pfad;

end;

procedure Tplaylist.DeleteRow(RowNumber : Integer);
var
i : Integer;
begin



  for i := RowNumber to RowCount - 2 do
    Rows[i].Assign(Rows[i+ 1]);


  Rows[RowCount-1].Clear;
  RowCount := RowCount - 1;
 for i := 1 to rowcount do
 cells[0,i] := inttostr(i);
end;

procedure TPlaylist.KeyDown(var Key: Word; Shift: TShiftState);
begin
if key = vk_delete then
   if (row <> 0) then
      deleterow(row);
end;

procedure Register;
begin
  RegisterComponents('Standard', [TPlayList]);
end;




end.
Bei Delphi 3 kann ich sie ohne Probleme installieren und verwenden!
Bei Delphi 2005 PE meckert er bei dieser Zeile:

property Track[index:integer]:TTracks read GetTracks;
Zitat:
[Fehler] playlist.pas(45): E2188 Published-Eigenschaft 'Track' kann nicht vom Typ ARRAY sein

Ich krieg das einfach nicht hin!
Martin Krämer
Be water my friend!!!
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Installation einer Komponente

  Alt 20. Aug 2006, 17:32
du Darfst keine Array-Properties im Published-Teil haben. Mag sein das es unter Delphi3 erlaubt ist, aber im Objectinspektor dürftest du es trotzdem nicht zu gesicht bekommen weil es nicht unterstützt wird.
Die Lösung des Problems ist einfach: Verschieb das Property in den Public-Teil
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von smepal
smepal

Registriert seit: 25. Okt 2005
Ort: Bechen
58 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Installation einer Komponente

  Alt 20. Aug 2006, 19:27
irgendwie kann ich auf die im published teil vereinbarten proceduren und auf die im public vereinbarten proceduren und property nicht zugreifen!
Bei Delphi 3 gehts!
Martin Krämer
Be water my friend!!!
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Installation einer Komponente

  Alt 20. Aug 2006, 19:48
Proceduren, Funktionen etc. gehören nicht in den Published-Teil. Warum hast du die Proceduren im Published-Teil?
Und was heißt "ich kann nicht darauf zugreifen"? Welche Fehlermeldung kommt? Mir scheint es als ob du die Bedeutung von Public, Published etc. nicht kennst.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#5

Re: Installation einer Komponente

  Alt 20. Aug 2006, 19:48
Zitat von smepal:
irgendwie kann ich auf die im published teil vereinbarten proceduren und auf die im public vereinbarten proceduren und property nicht zugreifen!
Auf public/published propertys kann man *immer* zugreifen. Also machst du irgendwas falsch. Ohne uns zu sagen was du machst, kann ich dir aber auch nicht sagen was du falsch machst...

  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Installation einer Komponente

  Alt 20. Aug 2006, 20:24
Zitat von SirThornberry:
Proceduren, Funktionen etc. gehören nicht in den Published-Teil. Warum hast du die Proceduren im Published-Teil?
Wird zwar vermutlich vom Fragesteller nicht so gedacht sein, aber wenn eine Procedure/Funktion im Published-Teil vorhanden ist sind RTTI-Infos vorhanden die man Ausnutzen kann. Für DUnit ist das z.B. nötig.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von smepal
smepal

Registriert seit: 25. Okt 2005
Ort: Bechen
58 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Installation einer Komponente

  Alt 20. Aug 2006, 21:51
Also ich habe jetzt die Kompo bei Delphi 2005 PE erfolgreich installiert.
Wenn ich jetzt bei Delphi 3playlist1.//... eingebe kommt eine Dropdownliste mit diversen Auswahlmöglichkeiten. Unteranderem mit den von mir im Published Teil vereinbarten Funktionen.

Bei Delphi 2005 PE kommt diese Liste auch doch fehlen die von mir neu vereinbarten Funktionen!
Martin Krämer
Be water my friend!!!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Installation einer Komponente

  Alt 20. Aug 2006, 21:54
De- und installiere das Package mal neu.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von smepal
smepal

Registriert seit: 25. Okt 2005
Ort: Bechen
58 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Installation einer Komponente

  Alt 20. Aug 2006, 22:04
Habe ich gerade getan!
Erfolglos!
Martin Krämer
Be water my friend!!!
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#10

Re: Installation einer Komponente

  Alt 21. Aug 2006, 00:46
Zitat von smepal:
Habe ich gerade getan! Erfolglos!
Wenn wir jetzt mal davon absehen, dass Prozeduren und Funktionen nicht in den published, sondern in den public Teil gehören, wie hier bereits erwähnt wurde, dann würde ich einfach mal probieren ob es trotzdem funktioniert, auch wenn die funktionen in der Code-Vervollständigung nicht auftauchen. Evtl ist auch deine Unit falsch eingebunden bzw der Suchpfad nicht gesetzt. Und wenn das nichts Hilft dann beweg das Zeug mal dahin wo es hin gehört, nämlich in den public Teil

  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 15:33 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