Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Någon som har lust förklara ?

Postades av 2006-01-03 11:25:02 - Sven Åke Persson, i forum delphi, Tråden har 5 Kommentarer och lästs av 2120 personer

Börjar bli rostig på avancerad Delphikod.
Kolla på function <b>FUNCTION PackNBr(Nbr : REAL ; Cifre : INTEGER) : STRING;</b>
fattar inte hur den funkar, den lämnar ju aldrig något i retur.
Vad gör det sista <b>BEGIN</b> just före <b>END.</b>
<code>
Unit Pack50;

{Denne Unit packer/udpacker en nummerisk string i 50 tals system}

INTERFACE

FUNCTION DoPack50(InPack : STRING) : String;
FUNCTION DoUnPack50(InUnPack : STRING) : String;

IMPLEMENTATION

CONST
PackChars : STRING[50] = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#œ-$%_()«&{}';


FUNCTION REALDiv(A, B: REAL) : REAL;
BEGIN
REALDiv := INT(A/B);
END;


FUNCTION ToREAL(InString : STRING) : REAL;
VAR
OK : BOOLEAN;
Count : INTEGER;
TmpResult : REAL;
BEGIN
OK := TRUE;
Count := 1;
TmpResult := 0.0;
While (Count <=Length(Instring)) AND OK DO
BEGIN
IF InString[Count] in ['0'..'9'] THEN
BEGIN
TmpResult := TmpResult * 10 + (ORD(InString[Count])-$30);
END
ELSE
BEGIN
OK := FALSE;
END;
INC(Count);
END;
IF OK THEN
BEGIN
ToREAL := TmpResult;
END
ELSE
BEGIN
ToREAL := 0.0;
END;
END;

FUNCTION PackNBr(Nbr : REAL ; Cifre : INTEGER) : STRING;
VAR
Rest, Count : INTEGER;
TmpResult : STRING;

FUNCTION GetRest(A, B : REAL) : INTEGER;
VAR
C : REAL;
BEGIN
C := REALDiv(A,B);
GetRest := Round(A-C*B);
END;

BEGIN
TmpResult := '';
FOR Count := 1 TO CIFRE DO
BEGIN
Rest := GetRest(Nbr, 50);
Nbr := REALDiv(Nbr,50);
TmpResult := PackChars[Rest+1] + TmpResult;
END;
PackNBr := TmpResult;
END;

FUNCTION UnPackNbr(InString : STRING) : REAL;
VAR
Count : INTEGER;
P : LONGINT;
OK : BOOLEAN;
TmpResult : REAL;

BEGIN
TmpResult := 0.0;
OK := TRUE;
Count := 1;
WHILE (Count <= Length(InString)) AND OK DO
BEGIN
P := Pos(InString[Count], PackChars)-1;
IF P >= 0 THEN
BEGIN
TmpResult :=(TmpResult*50)+P;
END
ELSE
BEGIN
OK := FALSE;
END;
INC(Count);
END;
IF OK THEN
UnPackNbr := TmpResult
ELSE
UnPackNBr := -1;
END;

FUNCTION DoPack50(InPack : STRING) : String;
BEGIN
DoPack50 := PackNbr(ToREAL(InPAck),8);
END;

FUNCTION DoUnPack50(InUnPack : STRING) : String;
VAR
TmpResult : STRING;
BEGIN
TmpResult := '';
STR(UnPackNbr(InUnPack):1:0,TmpResult);
DoUnpack50 := TmpResult;
END;
BEGIN
END.
</code>


Svara

Sv: Någon som har lust förklara ?

Postades av 2006-01-03 11:39:33 - Martin Adrian

I Pascal kan man ha lokala funktioner:

dvs PackNBr ser ut så här:
<code>

FUNCTION PackNBr(Nbr : REAL ; Cifre : INTEGER) : STRING;
VAR
Rest, Count : INTEGER;
TmpResult : STRING;

BEGIN
TmpResult := '';
FOR Count := 1 TO CIFRE DO
BEGIN
Rest := GetRest(Nbr, 50);
Nbr := REALDiv(Nbr,50);
TmpResult := PackChars[Rest+1] + TmpResult;
END;
PackNBr := TmpResult;
END;
</code>
och GetRest är en lokal funktion.


Svara

Sv:Någon som har lust förklara ?

Postades av 2006-01-03 12:07:20 - Sven Åke Persson

Oki Tack då förstår jag.


Svara

Sv: Någon som har lust förklara ?

Postades av 2006-01-03 12:38:42 - Sven Åke Persson

Martin eller någon annan, kan Ni förklara vad koden egentligen skall göra ?

Någon form av kryptering/packkning ?

Sitter som tidsfördriv och terapi översätter till VB

När jag provkör Vb och DoPack50 får jag detta underliga svar
<b>0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#œ-$%_()«&{}
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#œ-$%_()«&{}
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#œ-$%_()«&{}
BCDEFGHIJKLMNOPQRSTUVWXYZ!@#œ-$%_()«&{}@#œ-$%_()«&{}
œ-$%_()«&{}456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#œ-$%_()«&{}
NOPQRSTUVWXYZ!@#œ-$%_()«&{}</b>

DS


Svara

Sv:Någon som har lust förklara ?

Postades av 2006-01-09 15:45:13 - Per-Erik Andersson

Det verkar vara någon sorts kryptering av siffertal i en sträng. Nyfiken som jag var så klippte in koden i ett Delphi-program och testade. Insträngen "12345" gav "000004«)".


Svara

Sv: Någon som har lust förklara ?

Postades av 2006-01-09 19:22:33 - Sven Åke Persson

Ja det är rätt.
Vi fick tag i ett facitresultat.

885 skall bli 000000HZ
Programarkivet:Ny DoPack50_UnPack50


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 614
27 953
271 709
494
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies