Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Kein Zugriff auf Proceduren und Functionen (https://www.delphipraxis.net/185259-kein-zugriff-auf-proceduren-und-functionen.html)

wendelin 26. Mai 2015 11:12

Kein Zugriff auf Proceduren und Functionen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich möchte einen PGN-Parser schreiben um mit seiner Hilfe das PGN-Format in das FEN-Format umzuwandeln.
(PGN) ist ein als Text lesbares Datenformat zur Speicherung von Schachpartien.
Die Forsyth-Edwards-Notation (FEN) ist eine Kurznotation,mit der jede beliebige Brettstellung
im Schach niedergeschrieben werden kann.
Mit Hilfe des FEN-Format's kann so leicht ein Viewer erstellt
werden, mit dem man vorwärts und rückwärts durch eine Schachpartie blättern kann (als 2D-Schachbrett).

Nun habe ich eine sichtbare Komponente 'ChessDiag2D' (mit Source) für Delphi2 gefunden,welche ich problemlos nach D7
kompilieren und einbinden konnte.(http://www.bauer-schweitzer.de/index...x_minimax.html).

Ich würde mir mit dieser Komp. viel Arbeit ersparen, da sie Funktionen und Proceduren besitzt,
welche das FEN - Format unterstützen.
Die Komp. beinhaltet vier Units von denen drei Proc's und Func's beinhalten.

Mein Problem ist nun (ich kenne mich mit Komponenten nicht gut aus !): Leider kann ich im Gegensatz zu den Proc's
aus den Units 'Diagram' und 'Diag2D' auf die Proc's. und Func's aus der Unit 'Position.pas' nicht zugreifen.

Meine Frage ist nun, WARUM? und wie kann ich dies ev. ändern.
Liegt es ev. an der Portierung nach D7 ?.

Wolfgang

Perlsau 26. Mai 2015 11:20

AW: Kein Zugriff auf Proceduren und Functionen
 
Offensichtlich bindest du in deiner Position.pas nur die Unit DiagType.pas ein. Wenn du auf die anderen zugreifen willst, mußt du die selbstverständlich ebenfalls in deine USES-Klausel aufnehmen.

wendelin 26. Mai 2015 18:09

AW: Kein Zugriff auf Proceduren und Functionen
 
Hallo Perlsau,
danke für Deine schnelle Antwort.

In meinem Prog(ChessBoard) sind selbstverständlich alle vier Units der Komponente (Diag2D,Diagram,position und DiagType) eingebunden.
Trotzdem funktioniert es nicht.
Wie ich jetzt noch festgestellt habe, lassen sich auch nicht alle Funkt. und Proceduren aus Diagram.pas aufrufen.

Wolfgang

Perlsau 26. Mai 2015 18:22

AW: Kein Zugriff auf Proceduren und Functionen
 
Jetzt mal langsam: Du hattest oben geschrieben, du könntest von der Unit position.pas nicht auf diese anderen Units zugreifen. In der Zip-Datei, die du zum Download bereitgestellt hast, steht:
Delphi-Quellcode:
unit Position;

interface

uses
  DiagType,dialogs,sysutils;
...
Da steht also nur die Unit DiagType, nicht wahr? Woher soll die Unit position.pas Units kennen, die nicht in ihrer Uses-Klausel stehen?

Das in der Zip-Datei war doch dein vollständiges Projekt, oder etwa nicht?

Dalai 26. Mai 2015 18:29

AW: Kein Zugriff auf Proceduren und Functionen
 
Kannst du mal konkret machen, welche Funktionen du gern aufrufen würdest, und dies nicht funktioniert? Soweit ich das überblicke gibt's bis auf eine Ausnahme in den Units nur jeweils ein oder zwei Klassen. Die haben natürlich ihre Methoden, aber um die benutzen zu können, muss man schon eine Instanz der jeweiligen Klasse erzeugen, also ganz klassisch ein Objekt erzeugen:
Delphi-Quellcode:
var objekt: TKlasse;
begin
  objekt:= TKlasse.Create;
  try
    objekt.Methode1;
    objekt.Methode2(mit_parameter);
  finally
    objekt.Free;
  end;
end;
und so weiter.

Zitat:

Zitat von Perlsau (Beitrag 1303110)
Das in der Zip-Datei war doch dein vollständiges Projekt, oder etwa nicht?

Davon gehe ich nicht aus. Die Dateien sind von 1996/1997, was zwar nicht zwingend dagegenspricht, aber es findet sich ein Copyright von jemandem aus den USA am Anfang der Units.

MfG Dalai

Perlsau 26. Mai 2015 18:54

AW: Kein Zugriff auf Proceduren und Functionen
 
Zitat:

Zitat von Dalai (Beitrag 1303111)
Zitat:

Zitat von Perlsau (Beitrag 1303110)
Das in der Zip-Datei war doch dein vollständiges Projekt, oder etwa nicht?

Davon gehe ich nicht aus. Die Dateien sind von 1996/1997, was zwar nicht zwingend dagegenspricht, aber es findet sich ein Copyright von jemandem aus den USA am Anfang der Units.

Stimmt, darauf habe ich gar nicht geachtet.

Wendelin schrieb aber doch, wie ich es verstand, er könne von der Unit position aus nicht auf die anderen Units zugreifen, und das kann erstmal auch nicht gehen, wenn er sie nicht in die USES-Klausel aufnimmt. Doch offensichtlich habe ich den Satz falsch interpretiert: er kann also nicht auf die Methoden in position.pas zugreifen. Da war meine Aufmerksamkeit wohl gerade im Keller Kohlen schaufeln :lol:

Die Lösung hast du ja bereits hingeschrieben. Ich mach's nochmal ein bißchen konkreter:

@Wendelin

In position.pas gibt es die Klasse TChessPosition.

type
TChessPosition = class

Nun erstellst du in der Unit, in der du diese Klasse verwenden willst, eine Variable vom Typ dieser Klasse, entweder in einer deiner eigenen Methoden oder global, wenn du diese Klasse öfters in deiner Unit oder deinem Mainform benötigst:
Delphi-Quellcode:
...
Implementation

Uses
  Position;

Var
  ChessPos : TChessPosition;

Procedure TFormMain.Create(Sender: TObject);
begin
  ChessPos := TChessPosition.Create;
end;

Procedure TFormMain.Destroy(Sender: TObject);
begin
  ChessPos.Free;
end;

himitsu 26. Mai 2015 18:55

AW: Kein Zugriff auf Proceduren und Functionen
 
Laut Beschreibung ist es fast ein vollständiges Projekt mit Demokomponente.
Nur die Projektdatei (Package) muß man selber erstellen, oder man nimmt die Units in ein anderes bestehendes Designtime-Package auf. So, wie es praktisch in der Beschreibung erwähnt wurde.

wendelin 26. Mai 2015 21:56

AW: Kein Zugriff auf Proceduren und Functionen
 
Hallo Perlsau,

wahrscheinlich habe ich mich falsch ausgedrückt.
In der Zip-Datei waren ausschließlich die Pas.-Sourcen & Resourcen-Dateien der "ChessDiagram2D"-Komponente welche ein Schachbrett mit
Figuren in der Ausgangsstellung zeigt.
Mit Hilfe dieser Komp. und den in ihren Units vorhandenen Funkt.& Proc.
möchte ich mein Programm "PGN-Filter" (in Delphi-Praxis veröffentlicht) erweitern und dann wieder in "Delphi-Praxis" veröffentlichen.
Diesmal OHNE jede Beschränkung.

Wolfgang

Perlsau 26. Mai 2015 22:01

AW: Kein Zugriff auf Proceduren und Functionen
 
Nein, du hast dich nicht falsch ausgedrückt, höchstens ein bißchen kompliziert, so daß ich nicht gleich kapiert habe, was du eigentlich meinst.

wendelin 26. Mai 2015 22:13

AW: Kein Zugriff auf Proceduren und Functionen
 
Hallo Perlsau,Hallo Dalei
Eure Antwort :
Delphi-Quellcode:
Implementation

Uses
  Position;

Var
  ChessPos : TChessPosition;

Procedure TFormMain.Create(Sender: TObject);
begin
  ChessPos := TChessPosition.Create;
end;

Procedure TFormMain.Destroy(Sender: TObject);
begin
  ChessPos.Free;
end;
ist wahrscheinlich genau das, was ich gesucht habe, ich werde es sofort ausprobieren.
nochmals Danke

Wolfgang


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:28 Uhr.
Seite 1 von 2  1 2      

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