Browse Source

* fix error when loading breakpoints, try to load other items even after an error

pierre 23 years ago
parent
commit
954bd985e5
1 changed files with 38 additions and 182 deletions
  1. 38 182
      ide/fpdesk.pas

+ 38 - 182
ide/fpdesk.pas

@@ -18,7 +18,8 @@ unit FPDesk;
 interface
 
 const
-     DesktopVersion     = $0009; { <- if you change any Load&Store methods,
+     MinDesktopVersion  = $000A;
+     DesktopVersion     = $000A; { <- if you change any Load&Store methods,
                                       default object properties (Options,State)
                                       then you should also change this }
      ResDesktopFlags    = 'FLAGS';
@@ -284,7 +285,7 @@ begin
     begin
       PushStatus(msg_storingbreakpoints);
       New(S, Init(30*1024,4096));
-      BreakpointsCollection^.Store(S^);
+      S^.Put(BreakpointsCollection);
       S^.Seek(0);
       F^.CreateResource(resBreakpoints,rcBinary,0);
       OK:=F^.AddResourceEntryFromStream(resBreakpoints,langDefault,0,S^,S^.GetSize);
@@ -300,7 +301,7 @@ end;
 function ReadOpenWindows(F: PResourceFile): boolean;
 var S: PMemoryStream;
     OK: boolean;
-    W: word;
+    DV: word;
     WI: TWindowInfo;
     Title: string;
     XDataOfs: word;
@@ -314,6 +315,7 @@ procedure ProcessWindowInfo;
 var W: PWindow;
     SW: PSourceWindow absolute W;
     St: string;
+    Ch: char;
     TP,TP2: TPoint;
     L: longint;
     R: TRect;
@@ -422,17 +424,21 @@ begin
        end;
      hcASCIITableWindow:
        begin
-{$ifndef FVISION}
          if ASCIIChart=nil then
            begin
              New(ASCIIChart, Init);
              Desktop^.Insert(ASCIIChart);
            end;
          W:=ASCIIChart;
-{$else FVISION}
-         W:=nil;
-{$endif FVISION}
-       end;
+         if DV>=$A then
+           begin
+             GetData(ch,sizeof(char));
+             AsciiChart^.Report^.AsciiChar:=ord(ch);
+             AsciiChart^.Table^.SetCursor(
+               ord(ch) mod AsciiChart^.Table^.Size.X,
+               ord(ch) div AsciiChart^.Table^.Size.X);
+           end;
+      end;
   end;
   if W=nil then
     begin
@@ -466,8 +472,8 @@ begin
   S^.Seek(0);
   if OK then
   begin
-    S^.Read(W,SizeOf(W));
-    OK:=(W=DesktopVersion);
+    S^.Read(DV,SizeOf(DV));
+    OK:=(DV=DesktopVersion) or (DV>=MinDesktopVersion);
     if OK=false then
       ErrorBox(msg_invaliddesktopversionlayoutlost,nil);
   end;
@@ -532,6 +538,7 @@ var W: PWindow;
     XDataOfs: word;
     XData: array[0..1024] of byte;
     St: string;
+    Ch: char;
     TP: TPoint;
     L: longint;
 procedure AddData(const B; Size: word);
@@ -582,6 +589,11 @@ begin
         TP:=SW^.Editor^.CurPos; AddData(TP,sizeof(TP));
         TP:=SW^.Editor^.Delta; AddData(TP,sizeof(TP));
       end;
+    hcAsciiTableWindow :
+      begin
+        ch:=chr(PFPAsciiChart(P)^.Report^.AsciiChar);
+        AddData(ch,sizeof(char));
+      end;
   end;
 
   WI.TitleLen:=length(Title);
@@ -842,22 +854,22 @@ begin
           Application^.SetScreenVideoMode(VM);
       end;
     if ((DesktopFileFlags and dfHistoryLists)<>0) then
-      OK:=OK and ReadHistory(F);
+      OK:=ReadHistory(F) and OK;
     if ((DesktopFileFlags and dfWatches)<>0) then
-      OK:=OK and ReadWatches(F);
+      OK:=ReadWatches(F) and OK;
     if ((DesktopFileFlags and dfBreakpoints)<>0) then
-      OK:=OK and ReadBreakpoints(F);
+      OK:=ReadBreakpoints(F) and OK;
     if ((DesktopFileFlags and dfOpenWindows)<>0) then
-      OK:=OK and ReadOpenWindows(F);
+      OK:=ReadOpenWindows(F) and OK;
     { no errors if no browser info available PM }
     if ((DesktopFileFlags and dfSymbolInformation)<>0) then
-      OK:=OK and ReadSymbols(F);
+      OK:=ReadSymbols(F) and OK;
     if ((DesktopFileFlags and dfCodeCompleteWords)<>0) then
-      OK:=OK and ReadCodeComplete(F);
+      OK:=ReadCodeComplete(F) and OK;
     if ((DesktopFileFlags and dfCodeTemplates)<>0) then
-      OK:=OK and ReadCodeTemplates(F);
+      OK:=ReadCodeTemplates(F) and OK;
 {$ifdef Unix}
-    OK:=OK and ReadKeys(F);
+    OK:=ReadKeys(F) and OK;
 {$endif Unix}
     Dispose(F, Done);
   end;
@@ -954,172 +966,16 @@ end;
 END.
 {
   $Log$
-  Revision 1.3  2001-10-11 11:38:22  pierre
-   * small fvision specific changes
-
-  Revision 1.2  2001/08/05 12:23:00  peter
-    * Automatically support for fvision or old fv
-
-  Revision 1.1  2001/08/04 11:30:23  peter
-    * ide works now with both compiler versions
-
-  Revision 1.1.2.8  2001/03/22 17:28:03  pierre
-   * small fix to OpenWindows
-
-  Revision 1.1.2.7  2001/03/12 17:34:55  pierre
-   + Disassembly window started
-
-  Revision 1.1.2.6  2000/12/12 16:51:50  pierre
-   + keys loading/storing begin
-
-  Revision 1.1.2.5  2000/11/29 11:25:59  pierre
-   + TFPDlgWindow that handles cmSearchWindow
-
-  Revision 1.1.2.4  2000/11/29 00:54:44  pierre
-   + preserve window number and save special windows
-
-  Revision 1.1.2.3  2000/10/18 21:53:26  pierre
-   * several Gabor fixes
-
-  Revision 1.1.2.2  2000/09/18 13:20:54  pierre
-   New bunch of Gabor changes
-
-  Revision 1.1.2.1  2000/07/20 11:02:15  michael
-  + Fixes from gabor. See fixes.txt
-
-  Revision 1.1  2000/07/13 09:48:34  michael
-  + Initial import
-
-  Revision 1.29  2000/06/22 09:07:12  pierre
-   * Gabor changes: see fixes.txt
-
-  Revision 1.28  2000/05/02 08:42:27  pierre
-   * new set of Gabor changes: see fixes.txt
-
-  Revision 1.27  2000/04/25 08:42:33  pierre
-   * New Gabor changes : see fixes.txt
-
-  Revision 1.26  2000/04/18 11:42:36  pierre
-   lot of Gabor changes : see fixes.txt
-
-  Revision 1.25  2000/03/21 23:32:05  pierre
-   adapted to wcedit addition by Gabor
-
-  Revision 1.24  2000/03/20 19:19:46  pierre
-   * LFN support in streams
-
-  Revision 1.23  2000/03/13 20:36:52  pierre
-   * Breakpoints saved and loaded before sources
-
-  Revision 1.22  2000/02/07 12:03:48  pierre
-   Last commit is from Gabor's changes!
-
-  Revision 1.21  2000/02/07 11:55:27  pierre
-   + Code Complete and Template saving from Gabor
-
-  Revision 1.20  2000/02/04 00:12:57  pierre
-   * Breakpoint are marked in source at desktop loading
-
-  Revision 1.19  2000/01/25 00:26:36  pierre
-   + Browser info saving
-
-  Revision 1.18  2000/01/03 11:38:33  michael
-  Changes from Gabor
-
-  Revision 1.17  1999/12/20 00:30:56  pierre
-   * problem with VideoMode storing solved
-
-  Revision 1.16  1999/12/10 13:02:05  pierre
-  + VideoMode save/restore
-
-  Revision 1.15  1999/11/26 17:09:51  pierre
-   * Force Desktop into Screen
-
-  Revision 1.14  1999/11/25 00:25:43  pierre
-   * add Status when loading/saving files
-
-  Revision 1.13  1999/09/20 15:37:59  pierre
-   * ReadOpenWindows and ReadSymobls was missing, still does not work correctly :(
-
-  Revision 1.12  1999/09/17 16:41:10  pierre
-   * other stream error for Watches/Breakpoints corrected
-
-  Revision 1.11  1999/09/17 16:28:58  pierre
-   * ResWatches in WriteBreakpoints typo !
-
-  Revision 1.10  1999/09/16 14:34:58  pierre
-    + TBreakpoint and TWatch registering
-    + WatchesCollection and BreakpointsCollection stored in desk file
-    * Syntax highlighting was broken
-
-  Revision 1.9  1999/09/07 09:23:00  pierre
-   * no errors if no browser info available
-
-  Revision 1.8  1999/08/16 18:25:16  peter
-    * Adjusting the selection when the editor didn't contain any line.
-    * Reserved word recognition redesigned, but this didn't affect the overall
-      syntax highlight speed remarkably (at least not on my Amd-K6/350).
-      The syntax scanner loop is a bit slow but the main problem is the
-      recognition of special symbols. Switching off symbol processing boosts
-      the performance up to ca. 200%...
-    * The editor didn't allow copying (for ex to clipboard) of a single character
-    * 'File|Save as' caused permanently run-time error 3. Not any more now...
-    * Compiler Messages window (actually the whole desktop) did not act on any
-      keypress when compilation failed and thus the window remained visible
-    + Message windows are now closed upon pressing Esc
-    + At 'Run' the IDE checks whether any sources are modified, and recompiles
-      only when neccessary
-    + BlockRead and BlockWrite (Ctrl+K+R/W) implemented in TCodeEditor
-    + LineSelect (Ctrl+K+L) implemented
-    * The IDE had problems closing help windows before saving the desktop
-
-  Revision 1.7  1999/08/03 20:22:30  peter
-    + TTab acts now on Ctrl+Tab and Ctrl+Shift+Tab...
-    + Desktop saving should work now
-       - History saved
-       - Clipboard content saved
-       - Desktop saved
-       - Symbol info saved
-    * syntax-highlight bug fixed, which compared special keywords case sensitive
-      (for ex. 'asm' caused asm-highlighting, while 'ASM' didn't)
-    * with 'whole words only' set, the editor didn't found occourences of the
-      searched text, if the text appeared previously in the same line, but didn't
-      satisfied the 'whole-word' condition
-    * ^QB jumped to (SelStart.X,SelEnd.X) instead of (SelStart.X,SelStart.Y)
-      (ie. the beginning of the selection)
-    * when started typing in a new line, but not at the start (X=0) of it,
-      the editor inserted the text one character more to left as it should...
-    * TCodeEditor.HideSelection (Ctrl-K+H) didn't update the screen
-    * Shift shouldn't cause so much trouble in TCodeEditor now...
-    * Syntax highlight had problems recognizing a special symbol if it was
-      prefixed by another symbol character in the source text
-    * Auto-save also occours at Dos shell, Tool execution, etc. now...
-
-  Revision 1.5  1999/06/30 23:58:13  pierre
-    + BreakpointsList Window implemented
-      with Edit/New/Delete functions
-    + Individual breakpoint dialog with support for all types
-      ignorecount and conditions
-      (commands are not yet implemented, don't know if this wolud be useful)
-      awatch and rwatch have problems because GDB does not annotate them
-      I fixed v4.16 for this
-
-  Revision 1.4  1999/04/15 08:58:05  peter
-    * syntax highlight fixes
-    * browser updates
+  Revision 1.7  2002-02-09 00:32:27  pierre
+   * fix error when loading breakpoints, try to load other items even after an error
 
-  Revision 1.3  1999/04/07 21:55:45  peter
-    + object support for browser
-    * html help fixes
-    * more desktop saving things
-    * NODEBUG directive to exclude debugger
+  Revision 1.6  2002/09/07 15:40:42  peter
+    * old logs removed and tabs fixed
 
-  Revision 1.2  1999/03/23 16:16:39  peter
-    * linux fixes
+  Revision 1.5  2002/09/04 14:03:52  pierre
+   * MinDesktopVersion increased because of CodeComplete changes
 
-  Revision 1.1  1999/03/23 15:11:28  peter
-    * desktop saving things
-    * vesa mode
-    * preferences dialog
+  Revision 1.4  2002/05/31 12:37:09  pierre
+   + register asciitable char
 
 }