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


Översättning från Pascal(Delphi) -> VB6

Postades av 2005-12-30 11:04:45 - Håkan Fogelin, i forum visual basic - allmänt, Tråden har 22 Kommentarer och lästs av 990 personer

Hej,

mina kunskaper och läroböcker omfattar endast TurboPascal 5.5 och ej nyare versioner.
Har fått programkod sm jag måste översätta till VB6. Är det någon som kan hjälpa mig ?
Dessa funktioner skall ligga i samma modul som de anropas ifrån.

mvh
Håkan

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.


Svara

Sv: Översättning från Pascal(Delphi) -> VB6

Postades av 2005-12-30 15:30:36 - Sven Åke Persson

Det ser enkelt ut.Jag tar det gärna som terapi.
Du får vänta någon dag eller två.

Gott Nyttår alla Vb och Delphi vänner Vb.net nissarna hoppas jag
tänker till och får ett Gott C++ år ;-)


Svara

Sv:Översättning från Pascal(Delphi) -> VB6

Postades av 2005-12-30 15:47:50 - Sven Åke Persson

Borttaget se slutversion


Svara

Sv: Översättning från Pascal(Delphi) -> VB6

Postades av 2005-12-30 17:15:46 - Sven Åke Persson

Ett tips som tåls att upprepas.

För många år sedan lade jag upp mitt program "VbToDelphi" här hos pelle.

Jag hittar det inte längre, men ! kör Google "VbTo Delphi" så hittar Ni en hel del.

Fö älskar jag Delphi för att det är så lätt att lära för oss gamla Vb-freeks.

Förresten vad betyder Google ???


Svara

Sv:Översättning från Pascal(Delphi) -> VB6

Postades av 2005-12-30 17:56:24 - Sven Åke Persson

Ahaaa kom på det nu, Ord = ordinal och betyder var det sökta tecknet står i strängen.

Samma som Vb:s InStr.

Iom. det tycker jag att Delphikoden är "klumpig och dum"

Inget större proffs som skrivit den.

Vad skall den egentligen göra ?


Svara

Sv:Översättning från Pascal(Delphi) -> VB6

Postades av 2006-01-01 21:13:26 - Henrik Wendel

"Förresten vad betyder Google ???"


Hmm betyder väl inget men man kan ju anta att det kommer från matematiska termen "googol"

Se mer:
http://mathforum.org/library/drmath/view/57575.html



Svara

Sv: Översättning från Pascal(Delphi) -> VB6

Postades av 2006-01-01 21:52:03 - Johan Forsberg

Delphi = Pseudokod = ej äkta kod :)


Svara

Sv: Översättning från Pascal(Delphi) -> VB6

Postades av 2006-01-02 07:18:55 - Janne Hentschel

Jag kan inte påstå att jag vet svaret men "googles" är väl ett slanguttryck för glasögon? Google borde väl då bli något i stil med granska, sök, leta.

/Janne


Svara

Sv: Översättning från Pascal(Delphi) -> VB6

Postades av 2006-01-02 10:28:33 - Håkan Fogelin

Hej,

det är en kod som räknar om i ngt som kallas 50-talssystem. Vi skall skicka in order till ett
system som endast klarar av filnamn med 8+3 tecken vissa referenser som endast är 8 tecken.
Via denna kod skall vi kunna konvertera långa filnamn, som består av siffror, och långa referenser
till 50-tals system. Jag försöker att klura ut hur det skall fungera och när jag nu fått hjälp på
traven så kanske jag löser det. Tack för hjälpen.
Håkan


Svara

Sv:Översättning från Pascal(Delphi) -> VB6

Postades av 2006-01-02 11:30:28 - Sven Åke Persson

Oki på det.


Svara

Sv: Översättning från Pascal(Delphi) -> VB6

Postades av 2006-01-02 11:39:49 - Sven Åke Persson

Håkan !
Här har du tappat bort en del kodrader.

Edit: Fel av mig det var rätt.


Svara

Sv:Översättning från Pascal(Delphi) -> VB6

Postades av 2006-01-02 13:37:28 - Sven Åke Persson

Om Gud är god så skall denna översättning funka.
<b>Detta lägger du i en Form1 tex.</b>
<code>
Option Explicit

Private Sub Command1_Click()
MsgBox DoPack50("din teststräng här")
End Sub

Private Sub Command2_Click()
MsgBox DoUnPack50("din teststräng här")
End Sub

Private Function DoPack50(ByVal InPack As String) As String
DoPack50 = PackNBr(ToReal(InPack), 8)
End Function

Private Function DoUnPack50(ByVal InUnPack As String) As String
Dim tmpRes As String
tmpRes = CStr(UnPackNbr(InUnPack))
DoUnPack50 = tmpRes
End Function
</code>
<b> I en basModul </b>
<code>
Option Explicit
Public Const PACK_CHARS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#œ-$%_()«&{}"

Public Function RealDiv(ByVal A As Double, ByVal B As Double) As Double
RealDiv = A \ B 'Heltalsdivision
End Function

Public Function ToReal(ByVal strIn As String) As Double
Dim Ok As Boolean, count As Long, tmpRes As Double
Ok = True
count = 1
tmpRes = 0
Do While count <= Len(strIn) And Ok = True
If IsNumeric(Mid$(strIn, count, 1)) Then
'Hex 30 = 48 dec
tmpRes = tmpRes * 10 + Asc(Mid$(strIn, count, 1)) - 48
Else
Ok = False
End If
count = count + 1
If Ok Then
ToReal = tmpRes
Else
ToReal = 0
End If
Loop
End Function

Public Function GetRest(ByVal A As Double, ByVal B As Double) As Long
Dim C As Double
C = RealDiv(A, B)
GetRest = Int(A - C * B)
End Function

Public Function PackNBr(ByVal Nbr As Double, ByVal Cifre As Long) As String
Dim rest As Long, count As Long, tmpRes As String
tmpRes = ""
For count = 1 To Cifre
rest = GetRest(Nbr, 50)
Nbr = RealDiv(Nbr, 50)
tmpRes = Mid$(PACK_CHARS, rest + 1) & tmpRes
Next 'count
PackNBr = tmpRes
End Function

Public Function UnPackNbr(ByVal strIn As String) As Double
Dim count As Long, P As Long, Ok As Boolean, tmpRes As Double
tmpRes = 0
Ok = True
count = 1
Do While count <= Len(strIn) And Ok = True
P = InStr(PACK_CHARS, Mid$(strIn, count)) - 1
If P >= 0 Then
tmpRes = tmpRes * 50 + P
Else
Ok = False
End If
count = count + 1
Loop
If Ok = True Then
UnPackNbr = tmpRes
Else
UnPackNbr = -1
End If
End Function
</code>


Svara

Sv: Översättning från Pascal(Delphi) -> VB6

Postades av 2006-01-02 15:13:48 - Sven Åke Persson

Har testat VB koden lite,ser att det finns lite debugging att göra.

Skulle vara bra att få ett exempel på en riktig lösning.

Dvs en UnPack och en Pack att skicka till vårt test VB.


Svara

Sv:Översättning från Pascal(Delphi) -> VB6

Postades av 2006-01-02 19:08:20 - Sven Åke Persson

Nu har jag fått igång Delphiprojectet.
Dvs facit.

Om jag kan få ett riktigt värde att skicka till UnPack resp Pack
så kan jag trimma VB koden att göra likadant.

Nu får jag -1 och 00000 Varför vet jag inte kör din Pascalkod rakt upp och ner.

Men det är väl som gammalt känt "skit in skit ut"


Svara

Sv: Översättning från Pascal(Delphi) -> VB6

Postades av 2006-01-03 00:00:55 - Sven Åke Persson

När jag nu provkör VB koden får jag detta svar på <b>DoPack50</b> funktionen.

<b>0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#œ-$%_()«&{}
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#œ-$%_()«&{}
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#œ-$%_()«&{}
BCDEFGHIJKLMNOPQRSTUVWXYZ!@#œ-$%_()«&{}@#œ-$%_()«
&{}œ-$%_()«&{}456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#œ
-$%_()«&{}NOPQRSTUVWXYZ!@#œ-$%_()«&{}</b>

Är jag på rätt väg ?


Svara

Sv:Översättning från Pascal(Delphi) -> VB6

Postades av 2006-01-05 10:33:17 - Håkan Fogelin

Hej,

jag har fått denna ledtråd 885 i 50-tal-system är 000000HZ.


mvh
Håkan


Svara

Sv: Översättning från Pascal(Delphi) -> VB6

Postades av 2006-01-05 12:19:45 - Sven Åke Persson

Guld nu löser Vi det.


Svara

Sv:Översättning från Pascal(Delphi) -> VB6

Postades av 2006-01-05 12:25:25 - Sven Åke Persson

"Heureka" Det blir det hos mig med.

Återkommer inom kort på denna kanal med en korrekt Vblösning

Skicka ett mail till <b>svenpon@telia.com</b> så skall du till att börja med få en
fungerande Delphi .exe med bifogad källkod.

Delphi C++ mfl är underbara.

Jag behöver inte skicka med en massa Ms "shit" för att det skall funka.

Jag skickar en .exe så "Voila" funkar det.

Länge leve "Stand Alone" programmering. VB är en katastrof på just detta.
Annars är det kanon vad gäller lätt att designa mm. mm.
Kanonbra nybörjarprogrammering.


Svara

Sv: Översättning från Pascal(Delphi) -> VB6

Postades av 2006-01-05 23:40:25 - Sven Åke Persson

Kanske det finns fler som är intresserade
så jag lägger upp den på Programarkivet en stund.

Jag tar bort den om någon vecka.

Programarkivet:920

DS


Svara

Sv:Översättning från Pascal(Delphi) -> VB6

Postades av 2006-01-06 02:54:18 - Sven Åke Persson

<b>Delphi = Pseudokod = ej äkta kod :)</b>
<b> LOL</b>
Ytterligare ett intelligen inlägg från "mupparna" på läktaren .


Svara

Sv: Översättning från Pascal(Delphi) -> VB6

Postades av 2006-01-07 15:31:29 - Sven Åke Persson

Do_Pack50.exe (Delphi) är nu uppdaterad,
så man kan bara kan slå in siffror och versaler där det skall vara.
Programarkivet:920
DS


Svara

Sv:Översättning från Pascal(Delphi) -> VB6

Postades av 2006-01-07 15:43:30 - Sven Åke Persson

Såååååååååååååååååååånt djä..... strul om man skall ändra i Pelles
Programarkiv, mitt lilla "skötebarn"

Jag ville uppdater mitt Delphiprojekt . Det sket sig.

Phuuuuuuu......


Svara

Sv: Översättning från Pascal(Delphi) -> VB6

Postades av 2006-01-07 19:31:26 - Sven Åke Persson

Håller tråden vid liv

Programarkivet:Ny DoPack50_UnPack50


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

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 570 722
27 958
271 751
379
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