Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Andorra 2D compilieren (Delphi 5) (https://www.delphipraxis.net/157126-andorra-2d-compilieren-delphi-5-a.html)

Delphi-Narr 30. Dez 2010 16:50

Andorra 2D compilieren (Delphi 5)
 
Hallo,

ich versuche nun seit geraumer Zeit Andorra unter Delphi 5 zum Laufen zu bringen.
Dabei bin ich auf mehrere Hürden gestoßen.
Befehle werden nicht erkannt, Zeilen sind (angeblich) zu lang etc.

Ich habe mich nun bis zur Unit AdCanvas vorgekämpft.
Ich bekomme hier zwei Fehlermeldungen:
1.: [Fehler] AdCanvas.pas(1741): Undefinierter Bezeichner: 'CompareValue'

2. kennt Delphi 5 PSingle und PInteger nicht. Kann ich die einfach durch Single bzw. Integer ersetzen?

Viele Grüße!

Bernhard Geyer 30. Dez 2010 17:00

AW: Andorra 2D compilieren (Delphi 5)
 
Zitat:

Zitat von Delphi-Narr (Beitrag 1071262)
1.: [Fehler] AdCanvas.pas(1741): Undefinierter Bezeichner: 'CompareValue'

Wir vermutlich noch nicht vorhanden sein.
Zitat:

Zitat von Delphi-Narr (Beitrag 1071262)
2. kennt Delphi 5 PSingle und PInteger nicht. Kann ich die einfach durch Single bzw. Integer ersetzen?

Nein. Sind jeweils die Pointertypen
Delphi-Quellcode:
PInteger = @Integer;
PSingl = @Single;

Delphi-Narr 30. Dez 2010 17:06

AW: Andorra 2D compilieren (Delphi 5)
 
Danke für die schnelle Antwort.
Wie deklarier ich das denn?! :oops:
Wenn ich PInteger durch @Integer ersetze kommt ebenfalls ein Fehler...

EDIT: Schon gefunden...
Delphi-Quellcode:
PInteger=^Integer;


Kann mir jemand die CompareValue Funktion zukommen lassen? :-D

Viele Grüße!

igel457 30. Dez 2010 20:06

AW: Andorra 2D compilieren (Delphi 5)
 
Mal so frei aus der Hand anhand der Beschreibung hier implementiert:
Delphi-Quellcode:
inerface

type
  TValueRelationShip = 1..1;

function CompareValue(const A: Extended; const B: Extended; Epsilon: Extended = 0): TValueRelationship; overload;
function CompareValue(const A: Double; const B: Double; Epsilon: Double = 0): TValueRelationship; overload;
function CompareValue(const A: Single; const B: Single; Epsilon: Single = 0): TValueRelationship; overload;
function CompareValue(const A: Integer; const B: Integer): TValueRelationship; overload;
function CompareValue(const A: Int64; const B: Int64): TValueRelationship; overload;

implementation

function CompareValue(const A: Extended; const B: Extended; Epsilon: Extended = 0): TValueRelationship; overload;
begin
  if (abs(A - B) < Epsilon) then
    result := 0
  else if (A > B) then
    result := 1
  else
    result := -1;
end;

function CompareValue(const A: Double; const B: Double; Epsilon: Double = 0): TValueRelationship; overload;
begin
  if (abs(A - B) < Epsilon) then
    result := 0
  else if (A > B) then
    result := 1
  else
    result := -1;
end;

function CompareValue(const A: Single; const B: Single; Epsilon: Single = 0): TValueRelationship; overload;
begin
  if (abs(A - B) < Epsilon) then
    result := 0
  else if (A > B) then
    result := 1
  else
    result := -1;
end;

function CompareValue(const A: Integer; const B: Integer): TValueRelationship; overload;
begin
  if (A = B) then
    result := 0
  else if (A > B) then
    result := 1
  else
    result := -1;
end;

function CompareValue(const A: Int64; const B: Int64): TValueRelationship; overload;
begin
  if (A = B) then
    result := 0
  else if (A > B) then
    result := 1
  else
    result := -1;
end;

Delphi-Narr 30. Dez 2010 20:35

AW: Andorra 2D compilieren (Delphi 5)
 
Ich danke!
Ein kleiner Fehler ist dir unterlaufen :)

Statt
Delphi-Quellcode:
type
  TValueRelationShip = 1..1;
muss
Delphi-Quellcode:
type
  TValueRelationShip = -1..1;
eingesetzt werden.

Ich habe mir die dritte Funktion auch mal nach der Anleitung selbst zusammengebastelt, ist aber nicht so schön geworden, wie bei dir...
Doch daher habe ich es erstmal zum Laufen gekriegt.

Doch leider gibt es einige weitere Probleme in der AdBuffer.pas

1.: [Fehler] AdBuffer.pas(159): Deklaration von 'SetSize' unterscheidet sich von vorheriger Deklaration
Delphi-Quellcode:
    protected
      procedure SetSize(NewSize: Int64); override;
-> Wie ist die Deklaration richtig?

2.: [Fehler] AdBuffer.pas(181): Deklaration von 'Seek' unterscheidet sich von vorheriger Deklaration
Delphi-Quellcode:
function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; override;
-> Ich habe die richtige Deklaration zwar gefunden, doch TSeekOrigin und Word sind nicht kompatibel
--> Richtige Deklaration:
Delphi-Quellcode:
function Seek(Offset: Longint; Origin: Word): Longint; virtual; abstract;

Und in der Andorra-Datei sieht die Funktion so aus:
Delphi-Quellcode:
function TAdBufferStreamAdapter.Seek(const Offset: Int64;
  Origin: TSeekOrigin): Int64;
var
  newpos: Int64;
begin
  newpos := 0;

  //Calculate the new seek position depending on the given origin.
  case Origin of
    soBeginning: newpos := Offset;
    soCurrent:
    begin
      if FNewSeekPos = -1 then
        newpos := FPosition + Offset
      else
        newpos := FNewSeekPos + Offset
    end;
    soEnd: newpos := FStream.Size + Offset; //Offset is < 0
  end;

  //Fit "newpos" to the stream size bounds
  if newpos <= 0 then
    newpos := 0
  else if newpos > FStream.Size then
    newpos := FStream.Size;

  //Return the new position
  result := newpos;
  FNewSeekPos := newpos;
end;
:(
Wie kann ich das beheben? Oder muss ich mir doch irgendwo ein neueres Delphi zulegen? Delphi 6 gabs ja mal kurzzeitig kostenlos, doch die Links sind alle tot oder man wird auf die neue Homepage weitergeleitet und kann sich da eine 30-Tage-Version laden...

Viele Grüße!

igel457 30. Dez 2010 20:51

AW: Andorra 2D compilieren (Delphi 5)
 
Das wird schwieriger zu beheben sein, da das Problem die 64-Bit-Dateigrößen-Tauglichkeit der TStream-Klasse und die damit hinzugekommenen Funktionen und von mir überschriebenen Funktkionen sind. Man könnte das höchstens so umbauen, dass noch die alten Funktionen verwendet werden.

Vielleicht ist ja Lazarus was für dich, das gibt es kostenlos und Andorra 2D sollte auch damit funktionieren - auch wenn es noch nicht ganz so komfortabel wie die Delphi-IDE ist.

Delphi-Narr 30. Dez 2010 20:54

AW: Andorra 2D compilieren (Delphi 5)
 
Naja, ich glaube ich hole mir lieber mal eine neue Version von Delphi. Die sind dann vielleicht auch mal 99%ig mit Vista/Win7 kompatibel.
Ab welcher Version ist Andorra denn 100%ig kompatibel?

Viele Grüße und danke für die Hilfe

Edit:
Ich hab ja noch nicht komplett aufgegeben. Also ich bin jetzt so weit, dass ich die SetSize wieder auf alte Maßstäbe zurückgeschraubt habe.
Jetzt kommt der Compiler schon mal durch die AdBuffer.pas durch.
Ich hänge jetzt in der AdSimpleXML.
Die ganzen Fehler kann ich jetzt hier nicht posten, das sind zig Fehler. :(

Edit 2:
Noch eine Frage:
Ist Delphi 6 (immer noch) kostenlos? Ich hab ein bisschen gegooglt und in einem anderen Forum einen Key gefunden.
Doch ist die Verwendung legal? Ich mein Borland hatte Delphi 6 ja mal freigegeben, doch der Download ist weg.
Ich habe aber in einem weiteren Forum einen Link gefunden, wo einer mit Erlaubnis (angeblich) von Borland Delphi 6 auf seine HP geladen hat...

implementation 30. Dez 2010 22:03

AW: Andorra 2D compilieren (Delphi 5)
 
Lazarus läuft auch problemlos mit Windows Vista / 7, und besser als Delphi 5/6 ist es allemal.
(Die sind extrem veraltet, bei Lazarus hast du zumindest eine aktuelle Version.

Oder du suchst hier mal nach Bei Google suchenTurbo Delphi Explorer. Dazu ist es inzwischen nur schwierig, eine Lizenz zu kriegen.

Delphi-Narr 31. Dez 2010 10:10

AW: Andorra 2D compilieren (Delphi 5)
 
Ich werd mir das mal angucken und ausprobieren.
Ist Delphi 6 jetzt noch kostenlos oder nicht :?:
Naja, erstmal danke für die vielen Antworten!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:42 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