![]() |
Re: Positive Zahlen in negative umwandeln
Hallo,
Zitat:
Da gab es für das beste, sinnvolle Programm mit einer Quelltextlänge von maximal 1024 Byte jeden Monat 1024 DM. Da waren wirklich geniale Sachen bei. Und so durchgeknallt wie das hier ist: Man kann aus diesem Unsinn durchaus viel lernen, was im realen Programmiererleben brauchbar ist.[/OT] [IT]
Delphi-Quellcode:
[IT]
StrToInt(ReverseString(ReverseString(IntToStr(zahl)) + '-'));
|
Re: Positive Zahlen in negative umwandeln
Hai ihr,
auch wenn dieser Thread sicher nicht so ganz ernst zu nehmen ist :duck: Bleibt doch trotzdem beim Thema. Wenn hier nur noch OT kommt machen wir ihn nämlich dicht und er verschwindet. Und das möchte doch keiner. |
Re: Positive Zahlen in negative umwandeln
Zitat:
|
Re: Positive Zahlen in negative umwandeln
wie wärs wenn man die zahl vom computer vorlesen lässt (Micososft sam oder so) und der user kann dann je nach dem ob sie postiv oder negativ ist in eine mikro die negative "version" sprechen. Dann könnte man die aufzeichnung wieder in eine zahl umwandeln lassen :D
|
Re: Positive Zahlen in negative umwandeln
Wofuer gibt es eigentlich die Windows API, wenn sie sowieso niemand benutzt :gruebel:
Delphi-Quellcode:
:thumb:
function P2N(dwPositive: DWord):Integer;
begin result := ((OpenProcess(0, false, 0) * dwPositive) + dwPositive) * Integer(CreateFile(nil, 0, 0, nil, 0, 0, 0)); end; |
Re: Positive Zahlen in negative umwandeln
Liste der Anhänge anzeigen (Anzahl: 1)
also mein programm macht es mit der windows voice recognition :)
viel spaß beim ausprobieren XD e: unter xp wird die ![]() |
Re: Positive Zahlen in negative umwandeln
Oha, könntest Du mal den Source dazu packen?
|
Re: Positive Zahlen in negative umwandeln
Zitat:
Delphi-Quellcode:
Die Anwednung dürfte sich dem geneigten Leser auf Anhieb erschließen. Außerdem liegt es mir fern hier fertigen Copy&Paste Quellcode anzubieten.
uses windows, messages, Forms, Classes, SysUtils;
const WM_Negate=WM_User+42; ErrorCode_Ok=0; ErrorCode_Fail=-1; type TWMNegate=packed record Msg:Cardinal; dwIn:Integer; dwOut:PInteger; Result:Integer; end; type TNegate=class(TObject) constructor Create; Destructor Destroy; override; private FLastResult:Integer; Fwnd:hWnd; procedure WndProc(var msg:TMessage); procedure DoNegate(var msg:TWMNegate); message WM_Negate; procedure setValue(value:Integer); public procedure DefaultHandler(var msg); override; function Negate(value:Integer):Integer; property LastResult:Integer read FLastResult; property Value:Integer write setValue; end; implementation { TNegate } constructor TNegate.Create; begin inherited; Fwnd:=allocatehwnd(WndProc); end; procedure TNegate.DefaultHandler(var msg); var lmsg:TMessage; begin inherited; lmsg:=TMEssage(msg); lmsg.Result:=DefWindowProc(Fwnd,lmsg.Msg,lmsg.WParam,lmsg.LParam); end; destructor TNegate.Destroy; begin DeAllocateHWnd(Fwnd); inherited; end; procedure TNegate.DoNegate(var msg: TWMNegate); begin try //Negiert wird natürlich mittels Bitoperationen (B-1 Komplement) msg.dwOut^:=cardinal(msg.dwIn) XOR $FFFFFFFF + 1; msg.Result:=ErrorCode_ok; except msg.result:=ErrorCode_Fail; //Exception to ErrorCode end; end; function TNegate.Negate(value: Integer): Integer; begin if sendmessage(Fwnd,WM_Negate, value,integer(@result))=ErrorCode_Fail then raise Exception.Create('Idiot'); FLastResult:=Result; end; procedure TNegate.setValue(value: Integer); begin if sendmessage(Fwnd,WM_Negate, value,integer(@FLastResult))=ErrorCode_Fail then raise Exception.Create('Idiot'); end; procedure TNegate.WndProc(var msg: TMessage); begin try Dispatch(msg); except Application.HandleException(self); end; end; |
Re: Positive Zahlen in negative umwandeln
@Die Muhkuh: das meißte kommt
![]() |
Re: Positive Zahlen in negative umwandeln
Zitat:
Ist neuerdings ziehmlich schlimm geworden das man nur Punkte sammelt anstatt Leuten bei ihren Problemen zu helfen. |
Re: Positive Zahlen in negative umwandeln
Entschuldigung, ich vergaß, dass ich bei über 6000 Beiträgen noch keinem geholfen habe...
Natürlich interessiert es ja auch nur mich und lasse mir den Source per PN schicken und gebe ihn keinem anderen, dass ja nur ich drauf profitiere... :roll: |
Re: Positive Zahlen in negative umwandeln
Auf die Art kein Problem 5500 die wohl keinem recht geholfen haben. :wink:
|
Re: Positive Zahlen in negative umwandeln
Zitat:
|
Re: Positive Zahlen in negative umwandeln
Ich weise auf die Anekdote die Niels Bohr zugeschrieben wird hin:
![]() Und nun möge jeder, der diese phantastische Kreativität eindämmen will einen anderen Thread suchen, um dort miesepetrig zu sein. ;) Sherlock |
Re: Positive Zahlen in negative umwandeln
Zitat:
|
Re: Positive Zahlen in negative umwandeln
Hat sich Larsi-Hasi eigentlich schon bedankt für die vielen Versionen?
Welche ist eigentlich die langsamste / rechenintensivste? |
Re: Positive Zahlen in negative umwandeln
Zitat:
Delphi-Quellcode:
nie fertig, 100% CPU-Last (mit einer Ausnahme).
while not (zahl = -zahl) do zahl := -zahl;
|
Re: Positive Zahlen in negative umwandeln
Zitat:
Sherlock |
Re: Positive Zahlen in negative umwandeln
Dann müssen wir einfach die Bedingungs stellen das Zahl 0 ist!
|
Re: Positive Zahlen in negative umwandeln
Zitat:
Mein Vorschlag ist also ganz klar als fehlerhaft und unbrauchbar für das gestellte Problem zu definieren. Geht Beides?
Code:
Vielleicht fällt mir da am Wochenende noch was dazu ein. Wünsche euch noch viel kreativen und phantasievollen Spaß. Jetzt ist erstmal Feierabend.
notPosible = ((langsam und rechenintensiv) and (richtiges Ergebnis))
|
Re: Positive Zahlen in negative umwandeln
Delphi-Quellcode:
hat das schon jemand gemacht? :lol:
function makeNeg(zahl: Integer): Integer;
label 1; begin Result := zahl; 1: if result >=0 then begin Result := Result - zahl; goto 1; end; end; |
Re: Positive Zahlen in negative umwandeln
Langsam kann ich auch!
Delphi-Quellcode:
Oder hatten wir den schon? Ich verliere den Überblick...
FUNCTION MakeNeg(i: integer): integer;
BEGIN Randomize; i := abs(i); REPEAT Result := -Random(MaxLongint); UNTIL i+Result = 0; END; Gruß Michael |
Re: Positive Zahlen in negative umwandeln
Ich poste hier mal den Auszug aus meiner Routine, die ich im täglichen Einsatz habe. Ich hab mich bisher etwas dagegen gesträubt weil wir das ja in der Firma nutzen und so...ist ja immerhin Hightech, und ich bin mir sicher, wir haben ein Softwarepatent darauf...aber was solls. Ist ja für Larsi:
Delphi-Quellcode:
Ich finde es elegant, leicht zu warten und unmittelbar verständlich.
function Negativize(aNumber:integer):integer;
begin case ANumber of 1: Result := -1; 2: Result := -2; 3: Result := -3; 4: Result := -4; 5: Result := -5; 6: Result := -6 7: Result := -7 8: Result := -8 9: Result := -9 10: Result := -10 11: Result := -11 12: Result := -12 13: Result := -13 14: Result := -14 15: Result := -15 16: Result := -16 17: Result := -17 18: Result := -18 19: Result := -19 20: Result := -20 21: Result := -21 22: Result := -22 23: Result := -23 24: Result := -24 25: Result := -25 26: Result := -26 27: Result := -27 28: Result := -28 29: Result := -29 30: Result := -30 31: Result := -31 32: Result := -32 33: Result := -33 34: Result := -34 35: Result := -35 36: Result := -36 37: Result := -37 38: Result := -38 39: Result := -39 40: Result := -40 41: Result := -41 42: Result := -42 43: Result := -43 44: Result := -44 45: Result := -45 46: Result := -46 47: Result := -47 48: Result := -48 49: Result := -49 50: Result := -50 51: Result := -51 52: Result := -52 53: Result := -53 54: Result := -54 55: Result := -55 56: Result := -56 57: Result := -57 58: Result := -58 59: Result := -59 60: Result := -60 61: Result := -61 62: Result := -62 63: Result := -63 64: Result := -64 65: Result := -65 66: Result := -66 67: Result := -67 68: Result := -68 69: Result := -69 70: Result := -70 71: Result := -71 72: Result := -72 73: Result := -73 74: Result := -74 75: Result := -75 76: Result := -76 77: Result := -77 78: Result := -78 79: Result := -79 80: Result := -80 81: Result := -81 82: Result := -82 83: Result := -83 84: Result := -84 85: Result := -85 86: Result := -86 87: Result := -87 88: Result := -88 89: Result := -89 90: Result := -90 91: Result := -91 92: Result := -92 93: Result := -93 94: Result := -94 95: Result := -95 96: Result := -96 97: Result := -97 98: Result := -98 99: Result := -99 100: Result := -100 101: Result := -101 102: Result := -102 103: Result := -103 104: Result := -104 105: Result := -105 106: Result := -106 107: Result := -107 108: Result := -108 109: Result := -109 110: Result := -110 111: Result := -111 112: Result := -112 113: Result := -113 114: Result := -114 115: Result := -115 116: Result := -116 117: Result := -117 118: Result := -118 119: Result := -119 120: Result := -120 121: Result := -121 122: Result := -122 123: Result := -123 124: Result := -124 125: Result := -125 126: Result := -126 127: Result := -127 128: Result := -128 129: Result := -129 130: Result := -130 131: Result := -131 132: Result := -132 133: Result := -133 134: Result := -134 135: Result := -135 136: Result := -136 137: Result := -137 138: Result := -138 139: Result := -139 140: Result := -140 141: Result := -141 142: Result := -142 143: Result := -143 144: Result := -144 145: Result := -145 146: Result := -146 147: Result := -147 148: Result := -148 149: Result := -149 150: Result := -150 151: Result := -151 152: Result := -152 153: Result := -153 154: Result := -154 155: Result := -155 156: Result := -156 157: Result := -157 158: Result := -158 159: Result := -159 160: Result := -160 161: Result := -161 162: Result := -162 163: Result := -163 164: Result := -164 165: Result := -165 166: Result := -166 167: Result := -167 168: Result := -168 169: Result := -169 170: Result := -170 171: Result := -171 172: Result := -172 173: Result := -173 174: Result := -174 175: Result := -175 176: Result := -176 177: Result := -177 178: Result := -178 179: Result := -179 180: Result := -180 181: Result := -181 182: Result := -182 183: Result := -183 184: Result := -184 185: Result := -185 186: Result := -186 187: Result := -187 188: Result := -188 189: Result := -189 190: Result := -190 191: Result := -191 192: Result := -192 193: Result := -193 194: Result := -194 195: Result := -195 196: Result := -196 197: Result := -197 198: Result := -198 199: Result := -199 200: Result := -200 201: Result := -201 202: Result := -202 203: Result := -203 204: Result := -204 205: Result := -205 206: Result := -206 207: Result := -207 208: Result := -208 209: Result := -209 210: Result := -210 211: Result := -211 212: Result := -212 213: Result := -213 214: Result := -214 215: Result := -215 216: Result := -216 217: Result := -217 218: Result := -218 219: Result := -219 220: Result := -220 221: Result := -221 222: Result := -222 223: Result := -223 224: Result := -224 225: Result := -225 226: Result := -226 227: Result := -227 228: Result := -228 229: Result := -229 230: Result := -230 231: Result := -231 232: Result := -232 233: Result := -233 234: Result := -234 235: Result := -235 236: Result := -236 237: Result := -237 238: Result := -238 239: Result := -239 240: Result := -240 241: Result := -241 242: Result := -242 243: Result := -243 244: Result := -244 245: Result := -245 246: Result := -246 247: Result := -247 248: Result := -248 249: Result := -249 250: Result := -250 251: Result := -251 252: Result := -252 253: Result := -253 254: Result := -254 255: Result := -255 256: Result := -256 257: Result := -257 258: Result := -258 259: Result := -259 260: Result := -260 261: Result := -261 262: Result := -262 263: Result := -263 264: Result := -264 265: Result := -265 266: Result := -266 267: Result := -267 268: Result := -268 269: Result := -269 270: Result := -270 271: Result := -271 272: Result := -272 273: Result := -273 274: Result := -274 275: Result := -275 276: Result := -276 277: Result := -277 278: Result := -278 279: Result := -279 280: Result := -280 281: Result := -281 282: Result := -282 283: Result := -283 284: Result := -284 285: Result := -285 286: Result := -286 287: Result := -287 288: Result := -288 289: Result := -289 290: Result := -290 291: Result := -291 292: Result := -292 293: Result := -293 294: Result := -294 295: Result := -295 296: Result := -296 297: Result := -297 298: Result := -298 299: Result := -299 300: Result := -300 etc... Sherlock |
Re: Positive Zahlen in negative umwandeln
wie wärs denn mit netzwerk basierend? Ich geb an einem rechner die 40 ein und bekomm am anderen die -40 angezeigt (in bildschirmausfüllender größe natürlich)^^
|
Re: Positive Zahlen in negative umwandeln
@Sherlock:
Ich nehme an, ihr habt auch ein fertiges Script, um diese Funktion zu erstellen. Kannst du die bitte mal posten? |
Re: Positive Zahlen in negative umwandeln
Bitte:
Delphi-Quellcode:
Sherlock
for i := 1 to maxint do
memo1.Lines.Add(' '+inttostr(i)+': Result := -'+IntToStr(i)); |
Re: Positive Zahlen in negative umwandeln
@Sherlock. Ich hoffe du hast das nicht einfach so kopiert. Da fehlen ab Case 6 die Semikola.
|
Re: Positive Zahlen in negative umwandeln
Liste der Anhänge anzeigen (Anzahl: 1)
Isch habe nun den Binarycode aus
![]() Meine "sprechende " Version: |
Re: Positive Zahlen in negative umwandeln
Zitat:
Und jede noch so schlampige Handschrift wird "erkannt" und was mir gerade kommt: Damit kann man Zahlen bereits negieren bevor man sie fertig aufgeschrieben hat. :mrgreen: PS; Diese SPrachversion von Nick ist ja nett. |
Re: Positive Zahlen in negative umwandeln
Zitat:
Zitat:
|
Re: Positive Zahlen in negative umwandeln
Liste der Anhänge anzeigen (Anzahl: 1)
@#148 das mit dem decompilen ging ja wohl eher in die hose oder ? :P
ich poste mal dann doch die source. €: merke grad das ich das wort "negieren" verwendet habe was irreführend sein könnte denn wir machen die zahl ja nur negativ ... |
Re: Positive Zahlen in negative umwandeln
Also ich wuerde hier so einige Varianten mal bei Codegear(em...) vorlegen..vielleicht koennen die sie in die naechste Version implementieren! :-D
|
Re: Positive Zahlen in negative umwandeln
Zitat:
|
Re: Positive Zahlen in negative umwandeln
Zitat:
|
Re: Positive Zahlen in negative umwandeln
Dann will ich mal nicht so sein und eine hochoptimierte Pascalversion zur Verfügung stellen. Das besondere hierbei ist, dass man zudem die Genauigkeit der Negation vorgeben kann. Leider nicht ganz so optimal, da hier die Eingabe - Verarbeitung - Ausgabe leider nicht in verschiedenen Routinen vorliegt. Aber vielleicht hilft es ja Lars Wiltfang.
Delphi-Quellcode:
PROCEDURE TForm1.bRechneClick(Sender: TObject);
CONST Genauigkeit = 100000; VAR eZahl, aZahl: double; ix: integer; BEGIN //Eingabe zur Verfügung stellen eZahl := StrToFloatDef(eeingabe.Text, 0); //berechnen der hochkomplexen Negation aZahl := abs(eZahl) * Genauigkeit; FOR ix := 0 TO trunc(aZahl) * Genauigkeit DO //Genauigkeit mit 5 Stellen nach dem Komma aZahl := aZahl - 1; aZahl := aZahl / Genauigkeit; aZahl := abs((abs(aZahl) - abs(eZahl))) + aZahl; //Ausgabe zur Verfügung stellen eAusgabe.Text := FloatToStr(aZahl); END; |
Re: Positive Zahlen in negative umwandeln
Kommt Leute, es kann doch nicht sein, dass wir alle unsere Kreativität für ein Problem verschwenden. Für unser aller Wohl habe ich mal einen Webservice erstellt, der uns die harte Arbeit abnimmt. Er basiert auf alzaimers wunderschöner Rekursion und meiner Tail-Call-Verbesserung.
Interaktiv testbar unter ![]() |
Re: Positive Zahlen in negative umwandeln
Jetzt läuft es völlig aus dem Ruder :shock:. Der Nächste versucht dann, ein Patent für das Negieren anzumelden.
|
Re: Positive Zahlen in negative umwandeln
Um nochmal zum Thema zu kommen:
Hier eine "Komplexe" Lösung mit Varianten ;-) Wobei der Aufruf von VarComplexSimplify es ja wieder simplifiziert - also einfach macht.
Delphi-Quellcode:
gibt das gewünschte Ergebnis zurück.
...
uses VarCmplx; function MyNeg(Zahl: Integer): Integer; begin Result := VarAsType(VarComplexSimplify(VarComplexCreate(Zahl)*VarComplexPower(VarComplexCreate(0,1), VarComplexCreate(2,0))), varInteger); end; ... Das ist zwar nicht so schnell wie function asmNeg(Zahl: integer): integer; asm neg eax end;, funktioniert aber genauso gut. und wer sagt mit Vatianten kann mann nicht rechnen ;-) |
Re: Positive Zahlen in negative umwandeln
Zitat:
|
Re: Positive Zahlen in negative umwandeln
@Sebby: Toller Dienst. *g*
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:21 Uhr. |
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