AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Andorra 2D compilieren (Delphi 5)
Thema durchsuchen
Ansicht
Themen-Optionen

Andorra 2D compilieren (Delphi 5)

Ein Thema von Delphi-Narr · begonnen am 30. Dez 2010 · letzter Beitrag vom 31. Dez 2010
Antwort Antwort
Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#1

Andorra 2D compilieren (Delphi 5)

  Alt 30. Dez 2010, 16:50
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!
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.174 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Andorra 2D compilieren (Delphi 5)

  Alt 30. Dez 2010, 17:00
1.: [Fehler] AdCanvas.pas(1741): Undefinierter Bezeichner: 'CompareValue'
Wir vermutlich noch nicht vorhanden sein.
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;
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Andorra 2D compilieren (Delphi 5)

  Alt 30. Dez 2010, 17:06
Danke für die schnelle Antwort.
Wie deklarier ich das denn?!
Wenn ich PInteger durch @Integer ersetze kommt ebenfalls ein Fehler...

EDIT: Schon gefunden...
PInteger=^Integer;

Kann mir jemand die CompareValue Funktion zukommen lassen?

Viele Grüße!

Geändert von Delphi-Narr (30. Dez 2010 um 18:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Andorra 2D compilieren (Delphi 5)

  Alt 30. Dez 2010, 20:06
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;
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#5

AW: Andorra 2D compilieren (Delphi 5)

  Alt 30. Dez 2010, 20:35
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
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:
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!
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Andorra 2D compilieren (Delphi 5)

  Alt 30. Dez 2010, 20:51
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.
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  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 05:43 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