AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Kann Rudy's Big Number library nicht kompilieren…
Thema durchsuchen
Ansicht
Themen-Optionen

Kann Rudy's Big Number library nicht kompilieren…

Ein Thema von Andreas13 · begonnen am 14. Mai 2023 · letzter Beitrag vom 20. Mai 2023
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
719 Beiträge
 
Delphi XE5 Professional
 
#1

Kann Rudy's Big Number library nicht kompilieren…

  Alt 14. Mai 2023, 10:34
Delphi-Version: XE5
Halllo Community,
am 7. Apr 2023 konnten wir im Beitrag https://www.delphipraxis.net/212826-...pi-delphi.html erfahren, daß Rudy's Big Number library https://github.com/TurboPack/RudysBigNumbers erfreulicherweise weitergepflegt wird.

Hat jemand von Euch versucht, damit zu arbeiten?
Ich kann den Source-Code mit XE5 leider nicht kompilieren: Die Unit Velthuis.XorShifts.pas liefert mehrere Fehlermeldungen wie z. B.
[dcc32 Fehler] Velthuis.XorShifts.pas(160): E2029 Anweisung erwartet, aber 'VAR' gefunden

Weiß jemand einen Rat?
Danke im Voraus!
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Kann Rudy's Big Number library nicht kompilieren…

  Alt 14. Mai 2023, 10:41
.. wenn Du mit XE5 arbeitest, das kennt meines Erachtens noch keine Inline Variable.

Delphi-Quellcode:
constructor TXorShift32.Create;
begin
{$IFDEF MSWINDOWS}
  var C: Int64;
  if QueryPerformanceCounter(C) then
    FSeed := UInt32(C)
  else
{$ENDIF}
    FSeed := TThread.GetTickCount;
end;
nach

Delphi-Quellcode:
constructor TXorShift32.Create;
  var C: Int64;
begin
{$IFDEF MSWINDOWS}
  if QueryPerformanceCounter(C) then
    FSeed := UInt32(C)
  else
{$ENDIF}
    FSeed := TThread.GetTickCount;
end;
ändern.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
719 Beiträge
 
Delphi XE5 Professional
 
#3

AW: Kann Rudy's Big Number library nicht kompilieren…

  Alt 14. Mai 2023, 12:03
Vielen Dank Klaus für Deinen Hinweis! Das Kompilieren hat zwar geklappt, aber nach Umschreibung der Inline-Variablen auf "ordentlich deklarierte" erhalte ich in den Demos / Samples diverse Speicherlecks, die ich nicht bereinigen konnte.

Verstehe nicht, warum solche Inline-Deklarationen wie z. B. in BigMathConstants.dpr gut sein sollen:
Delphi-Quellcode:
var EulerDigits := 500; // welcher Type ist das eigentlich? Integer, Word, UInt64... ?
..
var CalcEuler := Euler(EulerDigits);
..
var CheckEuler := TFile.ReadAllText('..\..\..\Samples\MathConstants\Euler10k.txt');

var firstError := CheckDigits(calcEuler.ToString, CheckEuler);
Davon wird der Code nur chaotisch, nicht unbedingt besser, und manchmal sogar nicht einmal eindeutig...

[edit]:
oder gar sowas
Delphi-Quellcode:
for var idx := 1 to Length(Digits1) do // Digits1 ist ein String
...
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)

Geändert von Andreas13 (14. Mai 2023 um 12:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#4

AW: Kann Rudy's Big Number library nicht kompilieren…

  Alt 14. Mai 2023, 12:17
Das hängt sicher auch von der Art des Einsatzes von Inline-Variablen und vom persönlichen Geschmack ab.

Gerade das automatische Ermitteln des Typs ist in vielen Fällen ganz hilfreich (z.B. wenn der Rückgabetyp einer Funktion sich ändert) und erübrigt manchmal sogar das Hinzufügen einer Unit in der Uses-Clause um lediglich Zugriff auf die Typdeklaration zu bekommen.

Mittlerweile verwende ich in for-Schleifen fast nur noch Inline-Variablen, da diese im Scope auf die Schleife beschränkt sind.

Delphi-Quellcode:
for var idx := Low(arr) to High(arr) do
...
passt halt zu jedem Array-Index. Genauso wie
Delphi-Quellcode:
for var element in arr do
...
zu jedem Elementtyp passt.

Nebenbei, aus Sicht des Compilers ist immer Eindeutigkeit gewährleistet.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
719 Beiträge
 
Delphi XE5 Professional
 
#5

AW: Kann Rudy's Big Number library nicht kompilieren…

  Alt 14. Mai 2023, 12:32
Du hast recht Uwe: in Schleifen wünschte ich mir auch schon lokal gültige Inline-Variablen, aber mit einer "anständigen" Deklaration...

Kann der Speicherleck von meiner Umstellung auf herkömmliche Deklarationen kommen?
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Kann Rudy's Big Number library nicht kompilieren…

  Alt 14. Mai 2023, 13:00
Zitat:
for var idx := 1 to Length(Digits1) do
Gerade das hat aber einen enormen Vorteil.

Hier kann niemand mehr auf die saublöde Idee kommen jene Variable nach der Schleife noch benutzen zu wollen.




Und wenn man sich Inline-Variablen wie ein WITH vorstellt, dann kann es auch nett sein.
Aber egal ob globa, lokall oder inline, ist alles besser, als WITH,
aber beim Inline finde ich es besser, da auch mal in einer größeren Funktion einbuchstabig zu arbeiten (immerhin macht man ja das WITH, zum faulen Platzsparen), wenn diese Variable nur in einem abgegrenzten Teil benutzt wird.

Da lässt sich auch in mehreren Schleifen oder IFs, bzw. BEGIN-END-Blöcken der selbe Buchstabe nutzen, und dennoch ist theoretisch erkennbar, dass es unterschiedliche Inhalte sind.


Oder speziell für einen kurzen Debugcode (Debug-&Loggingausgabe), der sich z.B. über ein IFDEF an-/abschalten lässt, da kann eine dort benötigte Variable auch wirklich nur dort deklariert werden.
$2B or not $2B

Geändert von himitsu (14. Mai 2023 um 13:07 Uhr)
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
719 Beiträge
 
Delphi XE5 Professional
 
#7

AW: Kann Rudy's Big Number library nicht kompilieren…

  Alt 14. Mai 2023, 14:32
Könnt Ihr BigNumberVisualizers.dpr kompilieren? Dort sind zwar keine Inline-Deklarationen, aber anscheinend ein anderes Problem:

[dcc32 Fehler] Velthuis.BigIntegers.Visualizers.pas(96): E2065 Ungenügende Forward- oder External-Deklaration: 'TDebuggerBigIntegerVisualizer.GetSupportedType'
[dcc32 Fataler Fehler] BigNumberVisualizers.dpr(9): F2063 Verwendete Unit 'Velthuis.BigIntegers.Visualizers.pas' kann nicht compiliert werden


Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)

Geändert von Andreas13 (14. Mai 2023 um 14:59 Uhr)
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Kann Rudy's Big Number library nicht kompilieren…

  Alt 14. Mai 2023, 16:23
Hi Andreas,

mit Delphi 10.4.2 compiliert das ganze, zuerst musste BigNumbers erzeugt und installiert werden.
Wenn es mit Deinen geänderten Source nicht funktioniert - wäre es, glaube ich, zielführender diese hier einzustellen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
719 Beiträge
 
Delphi XE5 Professional
 
#9

AW: Kann Rudy's Big Number library nicht kompilieren…

  Alt 14. Mai 2023, 16:46
Hi Klaus,
das Kompilieren von package BigNumbers.dproj scheitert bei mir an der Zeile:
{$LIBSUFFIX AUTO}
[dcc32 Fehler] BigNumbers.dpk(28): E1030 Ungültige Compileranweisung: 'LIBSUFFIX'
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Kann Rudy's Big Number library nicht kompilieren…

  Alt 14. Mai 2023, 16:52
AUTO ist neu ... damit können aktuelle Delphis selbstständig/automatisch "ihre" PackageVersion da eintragen/benutzen

{$LIBSUFFIX '190'} erzeugt ein Package mit dem Suffix für XE5 ... in XE6 kompiliert mit dem selben Suffix, außer DU schreibst da 200 hin.
BigNumbers190.bpl
$2B or not $2B

Geändert von himitsu (14. Mai 2023 um 16:59 Uhr) Grund: ups
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    


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 10:05 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