Announcement

Collapse
No announcement yet.

Basics

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Basics

    Hi All,
    A few months ago, I bought PB8, Forms, and EZGUI as we needed to develop a series of apps at short notice. That process went very well, EZGUI made it too easy in a way, as I got the apps up and running without really knowing what was going on "under the hood".

    Now that's out the way, I want to look at PB (and Windows development in general) in a bit more detail. I'd like to start by making something that can open a small text file (something like an old school windows .INI file), change a character or two, and save it. This would give me the basics: File i/o, displaying data, and controlling what it does.

    There are lots of useful examples on the site showing how to do specific tasks, but I couldn't see too much at the other end of the scale, other than some msgbox "Hello World" things.

    Can anyone provide the source to (or a link to) a simple app like the one outlined above? Once I've got these basics (no pun intended) I'll then look at doing some fancier stuff.

    Thanks in advance to anyone that can help out.

    Cheers,
    Chris

  • #2
    For an SDK type example try the example files that came with PBWin 9.0:
    C:\PBWin90\Samples\Sdk\PBNote1
    For a DDT style editor of sorts check out:
    C:\PBWin90\PBForm15\Samples\CSV_Edit
    These may be more than you want, or not enough, but they are good starting points.
    Rod
    In some future era, dark matter and dark energy will only be found in Astronomy's Dark Ages.

    Comment


    • #3
      I saw those, and yes they are more than what I wanted, but it'll be a good exercise to sort out the bits I need.

      While at the "noob" stage, would it be best to stick with SDK or DDT?
      Or should both of them be learned?

      Thanks for the reply.

      Regards,
      Chris

      Comment


      • #4
        Because I use PBForms, which generates DDT code, I use a mix of SDK and DDT. There are lots of times when using the API(SDK) directly is necessary to produce the program you want. Timers come to mind as an example. Scrollbars.

        I found that even though PBForms generates DDT code, it helps with some of the uncertainties of the SDK. You will find that if you going to do much, you'll be accessing the SDK, but most of what you do can be done with DDT.

        I first used only DDT but as I progress, I find that I delve into the SDK with a lot foreboding than originally.

        By searching through the fora, finding examples of both coding styles, studying them you will see which fit your way of thinking better, and you could go with that.

        Which ever way you go, you won't be bored or disappointed.
        Rod
        In some future era, dark matter and dark energy will only be found in Astronomy's Dark Ages.

        Comment


        • #5
          Don't forget to look at the samples that come with PB.

          Also, browse through the Source Code section here. Find something that looks useful to you, then try to understand it then modify it. Your modifications don't have to be useful and can be discarded at the end; you just want to see what the effect of each change is.
          Erich Schulman (KT4VOL/KTN4CA)
          Go Big Orange

          Comment


          • #6
            This is not a 'file maintenance' but does show how to move around the screen using multiple controls and "do something" when an "OK" button is pressed.

            Waitable Timer Object Demo June 2005

            It also shows how to enable/disable various controls depending on the contents of the various controls and the program status.

            (I did it using DDT, which is not my strong suit).

            For file maintenances, on "OK" I generally edit the screen, then save or show error message.

            Probably worth a look-see.

            MCM
            Michael Mattias
            Tal Systems (retired)
            Port Washington WI USA
            [email protected]
            http://www.talsystems.com

            Comment


            • #7
              Chris,

              Since you are using EZGUI, take a look at the sample projects that come with it, in particular the RichText Editor and the Text Editor. The code will get you started in the right direction.

              Here is a simple routine which can load or save a text file and pass it to a text control. There are two versions, one for EZGUI, the other for DDT:

              Code:
              ' -----------------
              ' EZGUI version
              ' -----------------
              '
              ' F$         = File path and name
              ' Mode&      = 1 (save data), 0 (read data)
              ' Form$      = Controls parent Form which has the text
              ' ControlID& = ID of control which has the text
              '
              SUB DoFileAccess(BYVAL F$, BYVAL Mode&, BYVAL Form$, BYVAL ControlID&)
                   LOCAL T$, AFN%
                   AFN%=FREEFILE
                   IF Mode&=1 THEN
                        IF DIR$(F$)<>"" THEN KILL F$
                        ' retrieve the text from a control
                        ' ----------------------------------------
                        T$=EZ_GetText(Form$,ControlID&)
                        ' ----------------------------------------
                   ELSE
                        IF DIR$(F$)="" THEN EXIT SUB
                        T$=""
                   END IF
                   OPEN F$ FOR BINARY AS AFN%
                   IF Mode&=1 THEN
                        PUT$ AFN%, T$
                   ELSE
                        GET$ AFN%, LOF(AFN%), T$
                        ' Set controls text
                        ' ----------------------------------------
                        EZ_SetText Form$,ControlID&, T$
                        ' ----------------------------------------
                   END IF
                   CLOSE AFN%
              END SUB
              '
              '
              '
              ' -----------------
              ' DDT version
              ' -----------------
              '
              ' F$         = File path and name
              ' Mode&      = 1 (save data), 0 (read data)
              ' hDlg&      = Controls parent Dialogs handle which has the text
              ' ControlID& = ID of control which has the text
              '
              SUB DoFileAccess(BYVAL F$, BYVAL Mode&, BYVAL hDlg&, BYVAL ControlID&)
                   LOCAL T$, AFN%
                   AFN%=FREEFILE
                   IF Mode&=1 THEN
                        IF DIR$(F$)<>"" THEN KILL F$
                        ' retrieve the text from a control
                        ' ----------------------------------------
                        CONTROL GET TEXT hDlg&, ControlID& TO T$
                        ' ----------------------------------------
                   ELSE
                        IF DIR$(F$)="" THEN EXIT SUB
                        T$=""
                   END IF
                   OPEN F$ FOR BINARY AS AFN%
                   IF Mode&=1 THEN
                        PUT$ AFN%, T$
                   ELSE
                        GET$ AFN%, LOF(AFN%), T$
                        ' Set controls text
                        ' ----------------------------------------
                        CONTROL SET TEXT hDlg&, ControlID& , T$
                        ' ----------------------------------------
                   END IF
                   CLOSE AFN%
              END SUB
              Chris Boss
              Computer Workshop
              Developer of "EZGUI"
              http://cwsof.com
              http://twitter.com/EZGUIProGuy

              Comment


              • #8
                Very basic text editor.

                Chris,

                Seems that what you are looking for is something along the lines of:
                1. A Dialog with a TextBox (aka EditBox).
                2. A menu so you can call up File Open and File Save dialogs.
                3. Code to load text from a selected file data into the textbox.
                4. Code to take the TextBox contents and resave it.

                Starting with PBForms then cutting and pasting from CSV_Edit and sample code posted here in the forums gets you..
                Code:
                #PBForms Created V1.51
                #Compile Exe
                #Dim All
                 
                #PBForms Begin Includes 
                #If Not %Def(%WINAPI)
                  #Include "WIN32API.INC"
                #EndIf
                #PBForms End Includes
                #Include "ComDlg32.inc"                 ' needed for file open / save dialogs
                 
                #PBForms Begin Constants 
                %IDD_DIALOG1      =  101
                %IDR_MENU1        =  102
                %TXT_TEXTBOX1     = 1001
                %IDM_FILE_OPEN    = 1002
                %IDM_FILE_SAVE    = 1003
                #PBForms End Constants
                 
                %Grip             = 1004                ' sizegrip added manually
                $AppTitle = "BasEd"                     ' App title  "      "
                 
                Declare Function AttachMENU1(ByVal hDlg As Dword) As Dword
                Declare CallBack Function ShowDIALOG1Proc()
                Declare Function ShowDIALOG1(ByVal hParent As Dword) As Long
                #PBForms Declarations
                '------------------/
                 
                Function FileOpen(ByVal hDlg As Dword) As Long
                 Local sFile, sBuf As String
                 Local hFile As Long 
                 
                   OpenFileDialog(hDlg, _               ' wrapper for API function GetOpenFilename()
                       "Open TXT File", _               ' called from ComDlg32.inc
                       sFile, _
                       CurDir$, _
                       "Text files (*.txt)|*.txt|All Files|*.*", _
                       "tst", _
                       %OFN_FILEMUSTEXIST Or %OFN_HIDEREADONLY)
                 
                   hFile = FreeFile
                   Open sFile For Binary As hFile
                   If Err Then
                     MessageBox hDlg, "Error #" + Format$(Err) + " - " + Error$(Err) + $Cr + _
                         "While trying to open: " + sFile, $AppTitle, %MB_ICONEXCLAMATION
                     Exit Function
                   End If
                 
                           ' Read file into a buffer that's big enough.
                   sBuf = Space$(Lof(hFile))            ' Lof = number of bytes in file
                   Get$ hFile, Lof(hFile), sBuf         ' get file contents to buffer
                   Close hFile
                 
                   Control Set Text hDlg, %TXT_TEXTBOX1, sBuf   ' put data into editbox
                   Dialog Set Text hDlg, $AppTitle & " - [" & sFile & "]"  ' set caption
                 
                End Function
                '------------------/FileOpen
                 
                Function FileSave(ByVal hDlg As Dword) As Long
                 Local sFile, sBuf As String
                 Local hFile As Long 
                 
                   SaveFileDialog(hDlg, _               ' wrapper for API function GetSaveFilename()
                        "Save File As", _               ' called from ComDlg32.inc
                        sFile, _
                        "", _
                        "Text files (*.txt)|*.txt|All Files|*.*", _
                        "tst", _
                        %OFN_PATHMUSTEXIST Or %OFN_OVERWRITEPROMPT Or %OFN_CREATEPROMPT)
                 
                   hFile = FreeFile
                   Open sFile For Binary As hFile
                   If Err Then
                     MessageBox hDlg, "Error #" + Format$(Err) + " - " + Error$(Err) + $Cr + _
                         "While trying to open: " + sFile, $AppTitle, %MB_ICONEXCLAMATION
                     Exit Function
                   End If
                 
                     ' Read text into a buffer.
                   Control Get Text hDlg, %TXT_TEXTBOX1 To sBuf
                   Put$ hFile, sBuf                     ' Write to file
                   Close hFile
                 
                   Dialog Set Text hDlg, $AppTitle & " - [" & sFile & "]"  ' set caption
                 
                End Function
                '------------------/FileSaveAs
                 
                Function PBMain()
                  ShowDIALOG1 %HWND_DESKTOP
                End Function
                '------------------/PBMain
                 
                Function AttachMENU1(ByVal hDlg As Dword) As Dword
                #PBForms Begin Menu %IDR_MENU1->%IDD_DIALOG1
                  Local hMenu   As Dword
                  Local hPopUp1 As Dword
                 
                  Menu New Bar To hMenu
                  Menu New PopUp To hPopUp1
                  Menu Add PopUp, hMenu, "File", hPopUp1, %MF_ENABLED
                    Menu Add String, hPopUp1, "Open", %IDM_FILE_OPEN, %MF_ENABLED
                    Menu Add String, hPopUp1, "Save", %IDM_FILE_SAVE, %MF_ENABLED
                 
                  Menu Attach hMenu, hDlg
                #PBForms End Menu
                  Function = hMenu
                End Function
                '------------------/AttachMenu1
                 
                CallBack Function ShowDIALOG1Proc()
                 Local X, Y As Long 
                 Static hGrip, GripSizeX, GripSizeY As Long 
                 
                  Select Case As Long CbMsg
                    Case %WM_INITDIALOG
                      Control Handle CbHndl, %Grip To hGrip       ' Get handle of grip
                      GripSizeX = GetSystemMetrics(%SM_CXVSCROLL) ' Get std width of grip
                      GripSizeY = GetSystemMetrics(%SM_CYHSCROLL) ' Get std height of grip 
                 
                    Case %WM_SIZE                       ' Windows is resized...
                      X = Lo(Word, CbLParam )           ' New X size is in lo word of CbLparam
                      Y = Hi(Word, CbLParam )           ' New Y size is in hi word of CbLparam
                 
                      Dialog Pixels CbHndl, X, Y To Units X, Y ' Convert pixel sizes to units
                 
                      Control Set Loc  CbHndl, %TXT_TEXTBOX1, 0.05 * X, 0.05 * Y   ' move EditBox  
                      Control Set Size CbHndl, %TXT_TEXTBOX1, 0.9 * X, 0.9  * Y     ' & set size
                 
                      SetWindowPos hGrip, %NULL, Lo(Word, CbLparam) - GripSizeX, Hi(Word, CbLparam) - GripSizeY, _
                                  GripSizeX, GripSizeY, %SWP_NOZORDER              ' move / size Grip
                 
                    Case %WM_NCACTIVATE
                      Static hWndSaveFocus As Dword
                      If IsFalse CbWParam Then
                        hWndSaveFocus = GetFocus()
                      ElseIf hWndSaveFocus Then
                        SetFocus(hWndSaveFocus)
                        hWndSaveFocus = 0
                      End If
                 
                    Case %WM_COMMAND
                      Select Case As Long CbCtl
                        Case %TXT_TEXTBOX1
                 
                        Case %IDM_FILE_OPEN
                          FileOpen CbHndl
                 
                        Case %IDM_FILE_SAVE
                          FileSave CbHndl
                 
                      End Select
                  End Select
                End Function
                '------------------/ShowDialog1Proc
                 
                Function ShowDIALOG1(ByVal hParent As Dword) As Long
                  Local lRslt As Long 
                 
                #PBForms Begin Dialog %IDD_DIALOG1->%IDR_MENU1->
                  Local hDlg  As Dword
                 
                  Dialog New hParent, "Dialog1", 70, 70, 200, 132, %WS_POPUP Or %WS_BORDER Or %WS_DLGFRAME Or _
                    %WS_THICKFRAME Or %WS_SYSMENU Or %WS_CLIPSIBLINGS Or %WS_VISIBLE Or %DS_MODALFRAME Or %DS_3DLOOK Or _
                    %DS_NOFAILCREATE Or %DS_SETFONT, %WS_EX_CONTROLPARENT Or %WS_EX_LEFT Or %WS_EX_LTRREADING Or _
                    %WS_EX_RIGHTSCROLLBAR, To hDlg
                  Control Add TextBox, hDlg, %TXT_TEXTBOX1, "TextBox1", 5, 5, 190, 110, %WS_CHILD Or %WS_VISIBLE Or _
                    %WS_TABSTOP Or %WS_HSCROLL Or %WS_VSCROLL Or %ES_LEFT Or %ES_MULTILINE Or %ES_AUTOVSCROLL Or _
                    %ES_WANTRETURN, %WS_EX_CLIENTEDGE Or %WS_EX_LEFT Or %WS_EX_LTRREADING Or %WS_EX_RIGHTSCROLLBAR
                 
                  AttachMENU1 hDlg
                #PBForms End Dialog 
                 
                 Dialog Set Text hDlg, $AppTitle
                 
                    ' Add a 'size grip', see bottom right of dialog...
                 CONTROL ADD SCROLLBAR, hDlg, %Grip, "", 200, 132, 8, 8, _
                   %WS_CHILD OR %WS_VISIBLE OR %SBS_SIZEGRIP OR %SBS_SIZEBOXBOTTOMRIGHTALIGN
                 
                  Dialog Show Modal hDlg, Call ShowDIALOG1Proc To lRslt
                 
                #PBForms Begin CleanUp %IDD_DIALOG1
                #PBForms End CleanUp
                 
                  Function = lRslt
                End Function
                '------------------/ShowDialog1
                Ok I got a bit carried away with the code for resizing and all but hopefully you can see some wood in amongst the trees.
                Last edited by Dave Biggs; 25 Sep 2008, 11:00 AM. Reason: put back some missing spaces
                Rgds, Dave

                Comment


                • #9
                  Hi Dave,

                  Starting with PBForms then cutting and pasting from CSV_Edit and sample code posted here in the forums gets you..
                  Thanks for that - I saw straight away where I was going wrong.

                  Cheers
                  Chris

                  Comment


                  • #10
                    Chris, as far as your comment of
                    While at the "noob" stage, would it be best to stick with SDK or DDT?
                    Or should both of them be learned?
                    the answer is "It depends"...Your knowledge vs your background vs what you are after to learn vs what you comprehend

                    Personally I suggest both because it get you much farther than blindly following examples. (probably where VB went both right and wrong)

                    With DDT style you get to make something functionable (maybe not understand it, but it works)....and with SDK you start understanding WHYYYY what you wrote works the way it works

                    It can be intimidating depending on what it is that you want to make work, vs what you want to understand how it works sometimes, but

                    I would suggest keep an open mind and sample each, and eventuallly both make sense to you
                    Engineer's Motto: If it aint broke take it apart and fix it

                    "If at 1st you don't succeed... call it version 1.0"

                    "Half of Programming is coding"....."The other 90% is DEBUGGING"

                    "Document my code????" .... "WHYYY??? do you think they call it CODE? "

                    Comment


                    • #11
                      At some point, every programmer should create a program using "SDK" style, if for no other reason than to understand what the DDT is saving you... and at what cost.
                      Michael Mattias
                      Tal Systems (retired)
                      Port Washington WI USA
                      [email protected]
                      http://www.talsystems.com

                      Comment


                      • #12
                        At some point, every programmer should create a program using "SDK" style, ...
                        And here's how

                        Fred Harris' Beginning Win32 SDK Style Programming Example Series:
                        http://www.powerbasic.com/support/pb...ad.php?t=25174
                        Rgds, Dave

                        Comment


                        • #13
                          With DDT style you get to make something functionable (maybe not understand it, but it works)
                          Going by what you say, then at least for wow I'll be sticking with DDT.

                          Getting an app working to solve a problem is more important to me than knowing exactly how the result has been achieved. The first one - a computer based training and assessment app - turned out great thanks to the EZGUI add on. It would have taken me months instead of weeks without it.

                          The second problem is a way to open and sort large (several GB) .CSV files.
                          MS Excel has a 64K line limit and we need 4M...

                          I'll start off with the basics, opening a file, sorting data, and the like, and learn as I go. The app doesn't need to be pretty, unlike our last project (it's only for use by lab techs)... if it looks similar to a Win3.1 app, that's fine.

                          PC coding for me is a part time thing, an hour or two a day. Learning exactly what goes on "under the hood" is nice (and useful if things go wrong), but I have to be realistic with the time I can spend on this stuff.

                          Regards,
                          Chris.

                          Comment


                          • #14
                            Originally posted by Chris Burgess View Post
                            The second problem is a way to open and sort large (several GB) .CSV files.
                            MS Excel has a 64K line limit and we need 4M...
                            A really NICE feature of PB is (effectively) no limit to array size (maybe 3gig) or number of elements (64k?)

                            I'll start off with the basics, opening a file, sorting data, and the like, and learn as I go. The app doesn't need to be pretty, unlike our last project (it's only for use by lab techs)... if it looks similar to a Win3.1 app, that's fine.
                            Here's a very simple start for you Chris. These are (samples of) common Macros I use all the time.

                            '
                            Code:
                            'PBWIN 9.00 - WinApi 05/2008 - XP Pro SP3
                            #Compile Exe                                
                            #Dim All 
                            #Include "WIN32API.INC"
                             
                            Macro m_Binary_Open 'send fn$ - returns fle$, fnum, flen m$ 
                               fnum = FreeFile
                                Open fn$ For Binary As fnum
                                 flen = Lof(fnum)   
                               Fle$ = Space$(flen)'create a space to put the file
                               Get fnum,,fle$  'put the file in the space
                               Close fnum                    
                               'm$ = fn$: m_Err_Msg  'Check for ERROR here
                            End Macro
                             
                             
                            Macro m_File_into_Tmp_Array   'returns tmp$()
                                ctr = ParseCount(Fle$) 
                             
                                  ReDim tmp$(1 To ctr)
                                Parse fle$, tmp$()
                            End Macro
                             
                             
                             
                            Function PBMain
                              Local fle, fn, m, tmp() As String
                              Local ctr, fnum, flen As Long
                             
                              fn$ = "Drive\Folder\FileName.Extension"
                             
                              'next line Remmed as no file actually exists in the demo
                              'm_Binary_open 'opens the file and puts it in a string
                             
                              'Presume this returned
                              Fle$  = "1, 2, 3, 4, 5, 6, Ten, 11, Twelve"
                            '  ? fle$
                              m_File_into_Tmp_Array
                             
                              ?  "Now I can manipulate the array however I want."  & $CrLf & _
                                  tmp$(LBound(tmp$))  & $CrLf & _ 'first element
                                  tmp$(UBound(tmp$)) _'last element
                                 , , Using$("# elements. Wow, that was easy.", ctr)
                            End Function
                            '
                            PC coding for me is a part time thing, an hour or two a day. Learning exactly what goes on "under the hood" is nice (and useful if things go wrong), but I have to be realistic with the time I can spend on this stuff.

                            Regards,
                            Chris.
                            In the "early" days of PBWin I would advise sticking to EzGui and/or DDT. And I would advise getting Jellyfish Pro (a free editor for PB). It makes the PB world go around a little easier than the native editor that comes with PB. (At least it has for me.).

                            =============================================
                            Not from the whole wide
                            world I chose thee,
                            Sweetheart,
                            Light of the land and the sea!
                            The wide, wide world could not inclose thee,
                            For thou art the whole wide world to me.
                            Richard Watson Gilder
                            =============================================
                            Last edited by Gösta H. Lovgren-2; 3 Oct 2008, 11:03 PM.
                            It's a pretty day. I hope you enjoy it.

                            Gösta

                            JWAM: (Quit Smoking): http://www.SwedesDock.com/smoking
                            LDN - A Miracle Drug: http://www.SwedesDock.com/LDN/

                            Comment


                            • #15
                              really NICE feature of PB is (effectively) no limit to array size (maybe 3gig) or number of elements (64k?)
                              The limits are documented.

                              Element memory is limited to "memory available to the process" (generally 2 Gb less what you are already using); element count is limited to MAX_LONG (2 gb elements). Of course you rarely can get 2 Gb elements, since there is no way to use less than one byte per element except for a null dynamic string (0 bytes).

                              This sorting application does not describe the 'source' of the data to be sorted, but I'm pretty sure ARRAY SORT is going to be part of the solution.

                              MCM
                              Michael Mattias
                              Tal Systems (retired)
                              Port Washington WI USA
                              [email protected]
                              http://www.talsystems.com

                              Comment


                              • #16
                                When I said "no limit to array size (maybe 3gig)" it was a typo on my part, I *meant" 2gig.

                                When I said "number of elements (64k?)" of elements, I was thinking of the 32k limit I ran into a couple years ago (5?) in a (virtual?) list view (I think it was). Then something changed (Opsys? PB? My coding style? Brain cells?) that removed the 32k barrier. Don't recall what right now.

                                Was thinking it had something to do with (un)signed integers, but as MCM ({deep booming voice here} He Who Is Not To Be Argued With {/end DBV}) points out it may have been the difference between an Iinteger and a Long.

                                And certainly (again as M has so graciously and subtlely pointed out) I should have included ARRAY SORT in my meager example to Chris. Mea Culpa.

                                ==========================
                                "No Sane man will dance."
                                Cicero (106-43 B.C.)
                                ==========================
                                It's a pretty day. I hope you enjoy it.

                                Gösta

                                JWAM: (Quit Smoking): http://www.SwedesDock.com/smoking
                                LDN - A Miracle Drug: http://www.SwedesDock.com/LDN/

                                Comment


                                • #17
                                  When I said "number of elements (64k?)" of elements, I was thinking of the 32k limit I ran into a couple years ago (5?) in a (virtual?) list view (I think it was). Then something changed (Opsys? PB? My coding style? Brain cells?) that removed the 32k barrier. Don't recall what right now.


                                  IIRC, the number of elements in a PB Array was last limited to 32k in PB/DOS.

                                  Let me check the PB/DLL 2.0 (16-bit for Win/3) help real quick here... nope, that wasn't limited either...
                                  A PB/DLL array may contain up to 4,294,967,295 elements, and the data may occupy as much as all available memory. However, all individual index numbers must fall within the range of a long integer variable (-2147483648 to +2147483647).
                                  MCM
                                  Last edited by Michael Mattias; 4 Oct 2008, 09:54 AM.
                                  Michael Mattias
                                  Tal Systems (retired)
                                  Port Washington WI USA
                                  [email protected]
                                  http://www.talsystems.com

                                  Comment


                                  • #18
                                    Originally posted by Michael Mattias View Post


                                    IIRC, the number of elements in a PB Array was last limited to 32k in PB/DOS.

                                    Let me check the PB/DLL 2.0 (16-bit for Win/3) help real quick here... nope, that wasn't limited either...


                                    MCM

                                    Oh lord, .... much as I am loathe to engage in jousting with the Invincible, I must (timidly, with great trepidation, and a deepening sense of forebodement) I will point out that what I said was
                                    When I said "number of elements (64k?)" of elements, I was thinking of the 32k limit I ran into a couple years ago (5?) in a (virtual?) list view (I think it was).
                                    (Note the emphasis).

                                    ===============================
                                    "Books like friends,
                                    should be few and well-chosen."
                                    Samuel Boswell (1709-)
                                    ===============================
                                    It's a pretty day. I hope you enjoy it.

                                    Gösta

                                    JWAM: (Quit Smoking): http://www.SwedesDock.com/smoking
                                    LDN - A Miracle Drug: http://www.SwedesDock.com/LDN/

                                    Comment


                                    • #19
                                      Since the original question was asked by self-described "newbie" Mr. Burgess - so new, in fact, Mr. Burgess has yet to enter his location in his profile, (he not so subtly hinted) - I just wanted to make sure he did not get the wrong impression.

                                      BTW it is not "frozen" here. It was almost forty degrees this AM, so we had 6,8 degrees to play with before anything froze.


                                      MCM
                                      Michael Mattias
                                      Tal Systems (retired)
                                      Port Washington WI USA
                                      [email protected]
                                      http://www.talsystems.com

                                      Comment


                                      • #20
                                        Originally posted by Michael Mattias View Post
                                        - I just wanted to make sure he did not get the wrong impression.
                                        Ah , yes. Far be it for anyone to infer the "wrong impression" from anything you say.
                                        BTW it is not "frozen" here. It was almost forty degrees this AM, so we had 6,8 degrees to play with before anything froze.
                                        MCM
                                        Geez, I have a hard time playing with aything with only 6,8 degrees of room.

                                        ===================================
                                        "If you can count your money,
                                        you don't have a billion dollars."
                                        J. Paul Getty (1892-1976)
                                        ===================================
                                        It's a pretty day. I hope you enjoy it.

                                        Gösta

                                        JWAM: (Quit Smoking): http://www.SwedesDock.com/smoking
                                        LDN - A Miracle Drug: http://www.SwedesDock.com/LDN/

                                        Comment

                                        Working...
                                        X