Get CARDFILE.EXE running under windows 7/XP Compatibility?

Anonymous
2010-02-26T02:02:31+00:00

Can someone help me get CARDFILE.EXE running under windows 7/XP Compatibility?

Windows for home | Previous Windows versions | Apps

Locked Question. This question was migrated from the Microsoft Support Community. You can vote on whether it's helpful, but you can't add comments or replies or follow the question.

0 comments No comments
Answer accepted by question author
Anonymous
2010-11-26T18:04:06+00:00

You can associate all CRD files with cardfile.exe. Then make a shortcut to any of your CRD files and the shortcut will auto-launch cardfile.exe and open your clicked CRD file in it.

How do you associate CRD files with cardfile.exe? Easy. Right click any of your CRD files, select Properties. On the General tab, there is an item labeled: "Opens with:". There is a "CHANGE" button to the right of that which, when clicked, takes you to a list of applications from which you can choose. You can have your system open CRD files with whatever application you choose but CRD files are native to cardfile.exe so that would be your best choice.

hope this helps.

Was this answer helpful?

30+ people found this answer helpful.
0 comments No comments

80 additional answers

Sort by: Most helpful
  1. Anonymous
    2011-12-08T20:43:16+00:00

    You can associate all CRD files with cardfile.exe. Then make a shortcut to any of your CRD files and the shortcut will auto-launch cardfile.exe and open your clicked CRD file in it.

    How do you associate CRD files with cardfile.exe? Easy. Right click any of your CRD files, select Properties. On the General tab, there is an item labeled: "Opens with:". There is a "CHANGE" button to the right of that which, when clicked, takes you to a list of applications from which you can choose. You can have your system open CRD files with whatever application you choose but CRD files are native to cardfile.exe so that would be your best choice.

    hope this helps.

    No help,  In the 64 bit version of Windows 7 the CardFile.exe will NOT run.  It's fine in the 32 bit version.  Your answer did not address the true problem.  There is a  Shareware program that will import .crd data and display it.  Look up "Azz Cardfile".  You can run it in a trial version and be prompted to buy it, but at least you can see your data, and copy/export it.

    Was this answer helpful?

    0 comments No comments
  2. Anonymous
    2011-11-05T16:57:23+00:00

    Here are the details for the 2 tables. Also, under "Relationships", create a one-to-many relationship between the two tables on the ContactID field, with tblCardInput on the "One" side, and tblCardInputDetails on the "Many" side.

    I display the information using a main form, using data from the "tblCardInput" table, and a subform based on the "tblCardInputDetails"  table.

    Hope this works for you.

    Table Name:      tblCardInput

    Field Name:        ContactID

    Data Type :         AutoNumber     (Primary Key)

    Field Size:            Long Integer (default)

    Field Name:        ContactName

    Data Type:          Text

    Field Size:            40          

    Table  Name:     tblCardInputDetails

    Field Name:        ID

    Data Type:          AutoNumber     (Primary Key)

    Field Size:            Long Integer (default)

    Field Name:        ContactID

    Data Type:          Number

    Field Size:            Long Integer

    Field Name:        Contents

    Date Type:          Text                      

    Field Size:            255

    Was this answer helpful?

    0 comments No comments
  3. Anonymous
    2011-11-04T18:35:50+00:00

    Been so long since I worked with access was able to paste this into as module 1 send me the table data so I can create the two tables and then test. I have current .crd file I am using. assume once table is built is execute module 1. I will just copy my file to c:\windows\address.crd and see how this runs.

    Was this answer helpful?

    0 comments No comments
  4. Anonymous
    2011-11-04T16:57:35+00:00

    Here is the code. It requires two tables. I'll post the table details in another post. You should be able to copy and paste this into Access. You may be able to discern the table names and field names based on what is being populated in the code.

    What I found when I examined the .crd file structure, briefly, was the the each card title was 40 bytes in length. All the card file titles are stored one after another. All the card contents are stored together, one after the other. The problem I had was trying to figure out how the program knew which card title belonged to which content. What I found was, stored with the card's title, there is a 3 byte address that points to the position of each card's contents in the .crd file.

    I no longer have a .crd file to run this code on. I'd have to look at ancient backups to find one.

    Let me know if you have issues.

    You will also need to change the file path and name in the code. I never implemented having the code open a file dialog box to grab file location.

    Dave

    Function ReadCard()

    On Error GoTo Err_ReadCard

        Dim dbCard As Database

        Dim rstCard As Recordset

        Dim C1 As Long ' represents each character as it's read in - also used as 1st byte of 3-byte address

        Dim C2 As Long ' read second character in 3-byte address

        Dim C3 As Long ' read third character in 3-byte address

        Dim P1 As Long ' position, in bytes into the file, starting with 0 as start of file

        Dim P2 As Long ' position, in bytes relative to P1

        Dim a As Integer 'reusable loop counter

        Dim b As Integer 'reusable loop counter

        Dim HeadLen As Long ' length in bytes of header/tab area. bytes to first card content

        Dim FieldID As Long ' primary key

        Dim strField As String 'concatenated string for card title

        Dim FSize As Long 'file size

        Dim CSize As Long 'length of card contents for a particular record

        Set dbCard = DBEngine.Workspaces(0).Databases(0)

        Set rstCard = dbCard.OpenRecordset("tblCardInput", dbOpenDynaset)

        P1 = 0 'initialize byte counter

        Open "c:\windows\address.crd" For Binary As #1

        FSize = LOF(1)

    'Step 1

        For a = 1 To 12 ' step over first 11 characters and grab the 12th character

            C1 = Asc(Input(1, #1))

            P1 = P1 + 1 'increment byte counter

        Next a

    'Step 2

        C2 = Asc(Input(1, #1)) 'read second byte of three byte address

        P1 = P1 + 1 'increment byte counter

        C3 = Asc(Input(1, #1)) 'read third byte of three byte address

        P1 = P1 + 1 'increment byte counter

        HeadLen = GetContactID(C1, C2, C3) 'get number of bytes for header area

        FieldID = HeadLen ' get number of bytes ContactID to content for this entry

    'Step 3

        For a = 1 To 3 'setp over next 2 bytes and grab the 3rd as the start of the card title

            C1 = Asc(Input(1, #1))

            P1 = P1 + 1 'increment byte counter

        Next a

        GoSub GetTitle

        Do Until P1 >= HeadLen - 1 'step through the header area

    'Step 4,5

            GoSub GetAddress

            For a = 1 To 3 'setp over next 2 bytes and grab the 3rd as the start of the card title

                C1 = Asc(Input(1, #1))

                P1 = P1 + 1 'increment byte counter

            Next a

            GoSub GetTitle

        Loop

        FieldID = HeadLen

        rstCard.Close 'close table

    'Populate table with card contents

        Set rstCard = dbCard.OpenRecordset("tblCardInputDetails", dbOpenDynaset)

    'At this point P1 should be equal to the starting address of the card contents

        Do Until P1 = FSize - 1

            C1 = Asc(Input(1, #1))

            P1 = P1 + 1 'increment byte counter

            C1 = Asc(Input(1, #1))

            P1 = P1 + 1 'increment byte counter

            C2 = Asc(Input(1, #1))

            P1 = P1 + 1 'increment byte counter

            CSize = GetContactID(C1, C2, 0)

            C1 = Asc(Input(1, #1))

            P1 = P1 + 1 'increment byte counter

            GoSub GetContents

        Loop

        rstCard.Close 'close table

        Close #1    ' Close file.

    Exit_ReadCard:

        Close #1

        Exit Function

    Err_ReadCard:

        Close #1

        MsgBox Err.Description

        Resume Exit_ReadCard

    GetContents:

        P2 = 1

        While P2 <= CSize

            Do Until C1 = 13 Or C1 = 0 'first carrige return signifies end of line

                strField = strField + Chr(C1) 'keep concatenating

                If P1 = FSize - 1 Then Exit Do

                C1 = Asc(Input(1, #1)) 'Read one character.

                P1 = P1 + 1 'increment byte counter

                P2 = P2 + 1

            Loop

            If Len(strField) > 40 Then

                For b = 1 To Len(strField) Step 40

                    rstCard.AddNew

                    rstCard!ContactID = FieldID

                    rstCard!Contents = Mid(strField, b, 40)

                    rstCard.Update

                Next b

                strField = "" 'reset card title

            Else

                rstCard.AddNew

                rstCard!ContactID = FieldID

                rstCard!Contents = strField

                rstCard.Update

                strField = "" 'reset card title

            End If

            If C1 = 13 Then 'if CR then step over LF

                C1 = Asc(Input(1, #1)) ' Read one character.

                C1 = Asc(Input(1, #1)) ' Read one character.

                P1 = P1 + 2 'increment byte counter

                P2 = P2 + 2

            End If

            If P1 = FSize - 1 Then Return

        Wend

    FieldID = P1

    Return

    GetAddress:

        'C1 is already set to first byte of three byte address

        C2 = Asc(Input(1, #1)) 'read second byte of three byte address

        P1 = P1 + 1 'increment byte counter

        C3 = Asc(Input(1, #1)) 'read third byte of three byte address

        P1 = P1 + 1 'increment byte counter

        FieldID = GetContactID(C1, C2, C3) ' get number of bytes ContactID to contents of this entry

    Return

    GetTitle:

        P2 = 0

        Do

            If C1 <> 0 Then 'first zero byte signifies end of title

                strField = strField + Chr(C1) 'keep concatenating

            Else

                rstCard.AddNew

                rstCard!ContactID = FieldID

                rstCard!ContactName = strField

                rstCard.Update

                strField = "" 'reset card title

                Exit Do

            End If

            C1 = Asc(Input(1, #1)) ' Read one character.

            P1 = P1 + 1 'increment byte counter

            P2 = P2 + 1

        Loop

        For a = P2 To 46 'Step over remainder of 40 character title entry then 7 zero bytes to next address

            C1 = Asc(Input(1, #1)) ' Read one character.

            If P1 = HeadLen Then

                Exit For

            Else

                P1 = P1 + 1 'increment byte counter

            End If

        Next a

    Return

    End Function

    Function GetContactID(intByte1 As Long, intByte2 As Long, intByte3 As Long)

        GetContactID = intByte1 + (intByte2 * 256) + (intByte3 * 65536)

    End Function

    Was this answer helpful?

    0 comments No comments