Delphi-PRAXiS
Seite 2 von 6     12 34     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)

DeddyH 29. Okt 2008 18:01

Re: Positive Zahlen in negative umwandeln
 
Ja und? Das sind Menschen wie Du und ich, meine Frau ist Lehrerin an einer Schule für geistig und körperlich Behinderte und hat täglich mit solchen Menschen zu tun. Die, die ich davon kenne, sind absolut liebenswürdige Personen.

Die Muhkuh 29. Okt 2008 18:02

Re: Positive Zahlen in negative umwandeln
 
Wenn Du mal einer Gruppe von behinderten zuhörst, die ziehen sich ständig deswegen auf.
Und außerdem wollen die nicht bevorzugt werden, sondern auch als Mensch betrachtet werden. Und mehr macht das Bild nun nicht.

Noedel 29. Okt 2008 18:02

Re: Positive Zahlen in negative umwandeln
 
is ja gut ...
beruhigt euch mal wieder! :) *smile*

DeddyH 29. Okt 2008 18:06

Re: Positive Zahlen in negative umwandeln
 
Ich bin doch ruhig, nur wenn Dieter Bohlen auf dem Foto den Preis übergeben hätte, wäre ich jetzt stocksauer ;)

Die Muhkuh 29. Okt 2008 18:07

Re: Positive Zahlen in negative umwandeln
 
Dann wäre sein Einwand wenigstens berechtigt gewesen :lol:

The Riddler 29. Okt 2008 18:10

Re: Positive Zahlen in negative umwandeln
 
Zitat:

Zitat von Roachford
Zitat:

Zitat von The Riddler
@Deddy: Nene, es gibt nur Menschen die keinen Spass verstehen. Also lass dir deinen Preis nicht mies machen!

Ich kann Spass verstehen, du hättest viele Bilder linken können und ich habe kein Problem damit, so lange es nicht diskriminierend ist, was ich bei dem oben eingestellten verlinke. Das Problem ist leider meistens, das der grosse Anteil der Menschen nicht mit behinderten Menschen zu tun haben und deshalb (wenn auch vllt. unabsichtig) recht unsensibel sind.

Schwachsinn. Ich lache über Behinderte, Kinder, Frauen und andere Minderheiten genauso wie über "normale" Menschen. Genau das ist das schlimme was diese Menschen erleiden müssen, dass manche Menschen denken man muss sie anders behandeln nur weil sie behindert sind. :roll:

Und nun keep on working at OP's question.

@ST: Erwischt. :mrgreen:

mr_emre_d 29. Okt 2008 18:12

Re: Positive Zahlen in negative umwandeln
 
Also lieber Larsi

Hier ne nützliche Klasse, die diese Superfunktion beinhaltet

Delphi-Quellcode:
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:
Delphi-Quellcode:
var X: IntegeR;
begin
  X:= 10;
  TNeg.Create(X);
  ShowMessage( IntToStr( x ) );
end;
EDIT:
Credits go to DeddyH & Melfin
Thanks for ur help :)

[edit=SirThornberry]Code-Tags durch Delphi-Tags ersetzt - nächstes mal bitte die richtigen Tags verwenden - Mfg, SirThornberry[/edit]

Die Muhkuh 29. Okt 2008 18:20

Re: Positive Zahlen in negative umwandeln
 
Delphi-Quellcode:
Zahl := round(SinH(ln(1/(x+sqrt(sqr(x)+1)))));
(Autor ist jemand anders, nicht ich, will aber anonym bleiben, gell Mike)

Dax 29. Okt 2008 18:27

Re: Positive Zahlen in negative umwandeln
 
Delphi-Quellcode:
PByte(Integer(@Zahl))^ := PByte(Integer(@Zahl))^ or 128;
:mrgreen:

DeddyH 29. Okt 2008 18:28

Re: Positive Zahlen in negative umwandeln
 
Dieser Thread erinnert mich in Grundzügen an das hier: http://soren.overgaard.org/writings/...ameworks-suck/

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.

DeddyH 29. Okt 2008 18:54

Re: Positive Zahlen in negative umwandeln
 
Es gibt eben Probleme, die einer genauen Analyse bedürfen :mrgreen:

Dax 29. Okt 2008 19:09

Re: Positive Zahlen in negative umwandeln
 
Eine Zahl negativ machen, prüfen, ob eine Zahl negativ ist... Alles hochwichtige und -komplexe Probleme ;)

taaktaak 29. Okt 2008 19:21

Re: Positive Zahlen in negative umwandeln
 
Lange nicht mehr so gelacht,
das ist filmreif!

Könnte als Sketch auf den nächsten Delphi-Tagen aufgeführt werden
:cheer:

haentschman 29. Okt 2008 19:28

Re: Positive Zahlen in negative umwandeln
 
Zitat:

Könnte als Sketch auf den nächsten Delphi-Tagen aufgeführt werden
oh ja....Titel "Negation for one" :thumb:

@Larsi:
...wer den Schaden hat braucht für den Spott nicht sorgen.
...trage es uns nicht nach...wir sind nicht ausgelastet 8)

DeddyH 29. Okt 2008 19:39

Re: Positive Zahlen in negative umwandeln
 
Wir können nichts dafür... diese Stimmen... *huuuu*

Meflin 29. Okt 2008 19:40

Re: Positive Zahlen in negative umwandeln
 
Zitat:

Zitat von haentschman
...wer den Schaden hat braucht für den Spott nicht sorgen.

Was heißt da Spott?! Ich finde das eine außerordentliche Demonstration der Kreativität der DPler 8)

littleDave 29. Okt 2008 19:53

Re: Positive Zahlen in negative umwandeln
 
Hier ist nochwas mit MultiMedia: funktioniert zwar noch nicht ganz perfekt und es gibt einige Einschränkungen, aber immerhin kommt eine Negative Zahl raus (schwankung: +- 5) - aber immerhin ist sie negativ :mrgreen: und Multimedia :mrgreen:

Systemvorrausetzungen:
OpenGl 2.0 fähige Grafikkarte mit ShaderSupport :mrgreen:

Erstellungsdauer: ca. 10 min

Benötige Units: dglOpenGl;

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, dglOpenGL, ExtCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    FDC : HDC;
    FRC : THandle;
    FNumber : cardinal;
    FProgram : GLuint;

    FVertex  : string;
    FFragment : string;
    procedure DoRender;
  end;

var
  Form1: TForm1;

implementation

const
  SBadPC = 'Dein PC kann keine Zahlen negieren :P';

{$R *.dfm}

function CheckForErrors(glObject: GLHandleARB): String;
 var
  blen, slen: GLInt;
  InfoLog  : PGLCharARB;
begin
 glGetObjectParameterivARB(glObject, GL_OBJECT_INFO_LOG_LENGTH_ARB, @blen);
 if blen > 1 then
 begin
  GetMem(InfoLog, blen*SizeOf(GLCharARB));
  glGetInfoLogARB(glObject, blen , slen, InfoLog);
  Result:= PChar(InfoLog);
  Dispose(InfoLog);
 end;
end;


function LoadFragmentandVertexShader(FShaderText: string; VShaderText: string): GLHandleARB;
var
  ProgramObject, FragmentShaderObject, VertexShaderObject: GLHandleARB;
  FShaderLength: Integer;
  VShaderLength: Integer;
begin
 ProgramObject:= glCreateProgramObjectARB;

 FragmentShaderObject:= glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB);
 VertexShaderObject:= glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB);

 FShaderLength:= Length(FShaderText);

 VShaderLength:= Length(VShaderText);

 glShaderSourceARB(VertexShaderObject, 1, @VShaderText, @VShaderLength);
 glShaderSourceARB(FragmentShaderObject, 1, @FShaderText, @FShaderLength);

 glCompileShaderARB(FragmentShaderObject);
 glCompileShaderARB(VertexShaderObject);
 //ShowMessage(CheckForErrors(VertexShaderObject));
 
 glAttachObjectARB(ProgramObject, FragmentShaderObject);
 glAttachObjectARB(ProgramObject, VertexShaderObject);

 
 glDeleteObjectARB(FragmentShaderObject);
 glDeleteObjectARB(VertexShaderObject);
 glLinkProgramARB(ProgramObject);

 Result:= ProgramObject;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FFragment :=
  'void main(void)'+#13#10+
  '{'+#13#10+
  ' vec4 aColor = gl_Color;'+#13#10+
  ' aColor.x = 1.0;'+#13#10+
  ' gl_FragColor = aColor;'+#13#10+
  '}'+#13#10;

  FVertex :=
  'void main(void)'+#13#10+
  '{'+#13#10+
  ' gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;'+#13#10+
  ' gl_FrontColor = gl_Color;'+#13#10+
  '}'+#13#10;



  if not InitOpenGL() then
     raise Exception.Create(SBadPC);

  FDC := GetDC(Handle);
  FRC := CreateRenderingContext(FDC, [opDoubleBuffered], 32, 24, 0, 0, 0, 0);
  ActivateRenderingContext(FDC, FRC);


  if not GL_VERSION_2_0 then
     raise Exception.Create(SBadPC);

  if not GL_ARB_shading_language_100 then
     raise Exception.Create(SBadPC);

  FProgram := LoadFragmentandVertexShader(FFragment, FVertex);
  if FProgram = 0 then
     raise Exception.Create(SBadPC);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  DoRender;
end;

procedure TForm1.DoRender;
var aNumber : integer;
    bBool  : boolean;
begin
  glClearColor(0, 0, 0, 0);
  glClear(GL_DEPTH_BUFFER_BIT or GL_COLOR_BUFFER_BIT);

  glMatrixMode(GL_PROJECTION);
  glLoadIdentity;
  glViewPort(0, 0, ClientWidth, ClientHeight);
  gluPerspective(90, ClientWidth/ClientHeight, 1, 128);

  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity;

  glDisable(GL_TEXTURE_2D);
  glDisable(GL_LIGHTING);
  glDisable(GL_CULL_FACE);


  glTranslatef(0, 0, -1);
  //FNumber := (RGB(0, 126, 255) shl 8) or $FF;
  //FNumber := $00ABCDEF;
  Caption := IntToStr(FNumber and $FFFFFF);

  glColor4ubv(@FNumber);

  //Caption := IntToStr(glGetError);
  glUseProgramObjectARB(FProgram);
  //Caption := IntToStr(glGetError);
  //glColor4f(1, 1, 1, 1);
  glBegin(GL_QUADS);
    glVertex3f(-1, 1, 0);
    glVertex3f(-1,-1, 0);
    glVertex3f( 1,-1, 0);
    glVertex3f( 1, 1, 0);

  glEnd();

  aNumber := 0;
  glReadPixels(ClientWidth div 2, ClientHeight div 2, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, @aNumber);

  bBool   := aNumber and $FF000000 > 0;
  aNumber := aNumber and $FFFFFF;
  if bBool then
     aNumber := -aNumber;

  Caption := Caption + ' ' + IntToStr(aNumber);

  glGetError;
  SwapBuffers(FDC)
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  FNumber := random($FFFFFF);
end;

end.

DeddyH 29. Okt 2008 19:59

Re: Positive Zahlen in negative umwandeln
 
Da fehlt jetzt nur noch ein CaseModding-Modul und die Sache ist perfekt :mrgreen:

littleDave 29. Okt 2008 20:03

Re: Positive Zahlen in negative umwandeln
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ach so: um mal etwas rumzuspielen, hab ich die OGL-Variante mal kompiliert angehängt

die Zahl wird bei jedem Mause-Move geändert.

Danke an Matze für den Hinweis

Matze 29. Okt 2008 20:14

Re: Positive Zahlen in negative umwandeln
 
Lustige Lösungen.

Ich habe eine mit Texterkennung geschrieben. Die handgeschriebene Zahl wird erkannt und mit einem sehr komplexen Algorithmus negiert!

(Ich hoffe, das versteht einer von euch :mrgreen: )


Medium 29. Okt 2008 20:29

Re: Positive Zahlen in negative umwandeln
 
Ich lieg am Boden! :lol:

Noedel 29. Okt 2008 20:38

Re: Positive Zahlen in negative umwandeln
 
wie geil :coder2:

wie hast du das gemacht ? :D

Die Muhkuh 29. Okt 2008 21:08

Re: Positive Zahlen in negative umwandeln
 
Zitat:

Zitat von Matze
Ich habe eine mit Texterkennung geschrieben.

Häng doch mal den Source an :stupid:

alzaimar 29. Okt 2008 21:22

Re: Positive Zahlen in negative umwandeln
 
So, jetzt habt ihr es geschafft. Ich brech mir hier einen ab, poste eine endgeniale rekursive Lösung für das vermutlich NP-Komplette Problem der Zahlennegierung, das eben nicht mit irgendwelche billigen und zweitklassigen maschinen- implementierungs- und sonstwasabhängigen Eigenheiten auskommt, aber nee, neee, nee, ein grenzdebiler und altersschwacher Semiausländer wird ignoriert, in die Ecke gepackt, links liegengelassen, 'A waste of space' entgegengeschmettert, so tyyyypisch, wollt ihr das ich mich gleich erhänge oder soll ich mich vorher noch komplett zum Deppen machen oder wie oder was, hä?

Ich kündige. Oder geh schlafen. (Jeh nachdem, was zuerst eintritt)

jfheins 29. Okt 2008 21:32

Re: Positive Zahlen in negative umwandeln
 
Deine rekursieve Lösung ist zwar ganz nett, aber weder objektorientiert, noch mit einem UML-Diagramm versehen :mrgreen:

littleDave 29. Okt 2008 21:48

Re: Positive Zahlen in negative umwandeln
 
Ich find die Idee mit dem Webservice von alzaimar richtig gut!!!! : :cheer: :cheer: - jedoch müsste dann jemand den Thread ins Internet / LAN / ASP.NET - Forum verschieben :stupid:

Dunkel 29. Okt 2008 21:50

Re: Positive Zahlen in negative umwandeln
 
Wurde schon eine Thread-basierte Lösung vorgeschlagen? Eine Zahl zu negieren schreit doch, gerade wegen der Komplexität dieses Prozesses, geradezu nach verteilten Rechnen; wenn nicht auf Rechner-Clustern, dann sollte man doch zumindest den Performancezuwachs von MultiCores noch mitnehmen. Leider habe ich auf diesem Rechner kein Delphi installiert, zum blind runtertippen ist es zu spät. :stupid:

DeddyH 30. Okt 2008 08:21

Re: Positive Zahlen in negative umwandeln
 
Verteiltes Rechnen? Keine schlechte Idee, wenn man sich an das SETI-Projekt anlehnt, käme dann Larsi@home bei heraus :stupid:

Die Muhkuh 30. Okt 2008 11:27

Re: Positive Zahlen in negative umwandeln
 
Zitat:

Zitat von DeddyH
käme dann Larsi@home bei heraus :stupid:

Um Gottes Willen! :shock:

hitzi 30. Okt 2008 12:43

Re: Positive Zahlen in negative umwandeln
 
Ihr seit genial! Selten so gelacht :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:35 Uhr.
Seite 2 von 6     12 34     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