Delphi-PRAXiS
Seite 6 von 22   « Erste     456 7816     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Positive Zahlen in negative umwandeln (https://www.delphipraxis.net/123215-positive-zahlen-negative-umwandeln.html)

alzaimar 29. Okt 2008 18:29

Re: Positive Zahlen in negative umwandeln
 
Rekursiv? :cheer: Hat hier noch niemand an Rekusivität gedacht?
Delphi-Quellcode:
Function MakeNegative (Const aNumber : Integer) : Integer;
Begin
  If aNumber>0 Then
    Result := MakeNegative (aNumber-1)-1
  Else
    Result := 0;
End;
Vielleicht könnte man das noch in die Klasse einbauen... Ansonsten könnte man vielleicht noch einen Webservice implementieren und der Allgemeinheit zur Verfügung stellen.

Die Muhkuh 29. Okt 2008 18:34

Re: Positive Zahlen in negative umwandeln
 
Zitat:

Zitat von DeddyH
Dieser Thread erinnert mich in Grundzügen an das hier: http://soren.overgaard.org/writings/...ameworks-suck/

Factory factory factory :mrgreen:

Erinnert mich an das.

inherited 29. Okt 2008 18:38

Re: Positive Zahlen in negative umwandeln
 
Zitat:

Zitat von Dax
Delphi-Quellcode:
PByte(Integer(@Zahl))^ := PByte(Integer(@Zahl))^ or 128;
:mrgreen:

Klappt nicht bei Big Endian.

Dax 29. Okt 2008 18:39

Re: Positive Zahlen in negative umwandeln
 
Zitat:

Zitat von inherited
Zitat:

Zitat von Dax
Delphi-Quellcode:
PByte(Integer(@Zahl))^ := PByte(Integer(@Zahl))^ or 128;
:mrgreen:

Klappt nicht bei Big Endian.

Jup, aber PCs sind Little Endian. Und wenn man schon ein so spezielles Problem hat, soll man sich nicht über eine so spezielle Lösung wundern *g*

Sir Rufo 29. Okt 2008 18:40

Re: Positive Zahlen in negative umwandeln
 
Ja so geht das aber nicht, das ist ja gar nicht Thread-Safe ...
Zitat:

Zitat von mr_emre_d
Also lieber Larsi

Hier ne nützliche Klasse, die diese Superfunktion beinhaltet

Code:
interface

type
  TNeg = Class
  private
    FNumber: pInteger;
    procedure SetNumber(const Value: pInteger);
  public
    constructor Create(var Number: Integer );
    property Number: pInteger Read FNumber Write SetNumber;
    procedure Neg;
  End;

implementation

constructor TNeg.Create(var Number: Integer );
begin
  FNumber := @Number;
  Neg;
  Free;
end;

procedure TNeg.Neg;
begin
  Number^ := -Round(((sqrt(Power(Number^, 2)) * (-6)) / 6) - 2*Succ(Number^ xor
    (1 shl Pred(SizeOf(Integer) shl 3) + MAXINT)) );
end;

procedure TNeg.SetNumber(const Value: pInteger);
begin
  FNumber := Value;
end;
Und so kann sie verwendet werden:
Code:
var X: IntegeR;
begin
  X:= 10;
  TNeg.Create(X);
  ShowMessage( IntToStr( x ) );
end;
EDIT:
Credits go to DeddyH & Melfin
Thanks for ur help :)

So kann er das in allen Lebenslagen verwenden ...
Code:
interface

type
  TNeg = Class
  private
    FCS : TCriticalSection;
    FNumber: pInteger;
    function GetNumber : pInteger;
    procedure SetNumber(const Value: pInteger);
  public
    constructor Create(var Number: Integer );
    property Number: pInteger Read GetNumber Write SetNumber;
    procedure Neg;
  End;

implementation

constructor TNeg.Create(var Number: Integer );
begin
  FCS := TCriticalSection.Create;
  FNumber := @Number;
  Neg;
  Free;
end;

procedure TNeg.Neg;
begin
  Number^ := -Round(((sqrt(Power(Number^, 2)) * (-6)) / 6) - 2*Succ(Number^ xor
    (1 shl Pred(SizeOf(Integer) shl 3) + MAXINT)) );
end;

function TNeg.GetNumber : pInteger;
begin
  FCS.Enter;
  try
    RESULT := FNumber;
  finally
    FCS.Leave;
  end;
end;

procedure TNeg.SetNumber(const Value: pInteger);
begin
  FCS.Enter;
  try
    FNumber := Value;
  finally
    FCS.Leave;
  end;
end;
cu

Oliver

P.S.: Hat einer den Larsi schon mal wieder gesehen ...

Hawkeye219 29. Okt 2008 18:50

Re: Positive Zahlen in negative umwandeln
 
Hallo,

ob das alles wirklich hilft? Larsi sucht offenbar eine Multimedia-Lösung für sein Problem :wink:

Gruß Hawkeye

Larsi 29. Okt 2008 18:51

Re: Positive Zahlen in negative umwandeln
 
Ich habe zwar keine Ahung warum über 50 Beiträge nötig sind obwohl die Frage schon nach den ersten 3 Beiträgen geklärt wäre aber wenns euch Spaß macht. :gruebel: :-D :)

Sir Rufo 29. Okt 2008 18:52

Re: Positive Zahlen in negative umwandeln
 
Zitat:

Zitat von Hawkeye219
Hallo,

ob das alles wirklich hilft? Larsi sucht offenbar eine Multimedia-Lösung für sein Problem :wink:

Gruß Hawkeye

Stimmt, da kann man die Berechnung ja auch auf der GPU luafen lassen, das geht dann eh viel schneller

cu

Oliver

P.S.: Wer ist denn jetzt für eine Aufnahme des Threads in der CodeLib?

Neutral General 29. Okt 2008 18:53

Re: Positive Zahlen in negative umwandeln
 
Zitat:

Zitat von Larsi
Ich habe zwar keine Ahung warum über 50 Beiträge nötig sind obwohl die Frage schon nach den ersten 3 Beiträgen geklärt wäre aber wenns euch Spaß macht. :gruebel: :-D :)

Ja macht es :mrgreen:

TNeg ist übrigens nicht gerade so optimiert.. Warum eine Public Property "Number" wenn man eh nie darauf zugreifen kann?

Und ein Free; im constructor ist ja wohl auch alles andere als schön ;)

:stupid:

Die Muhkuh 29. Okt 2008 18:53

Re: Positive Zahlen in negative umwandeln
 
Er greift doch darauf zu.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:27 Uhr.
Seite 6 von 22   « Erste     456 7816     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz