OSDN Git Service

Added support for '+' expression
authornaru <bottle@mikage.to>
Sun, 6 Apr 2003 13:46:11 +0000 (13:46 +0000)
committernaru <bottle@mikage.to>
Sun, 6 Apr 2003 13:46:11 +0000 (13:46 +0000)
SVG.dll.txt
SVG.dpr

index 5445eeb..8ca4706 100644 (file)
@@ -15,4 +15,5 @@ SSTP-Viewer
 
 \81\9c\97\9a\97ð
 \81@1.0 \8f\89\8cö\8aJ
-\81@1.1 ghost.txt\82ðGUI\82Å\90Ý\92è\89Â\94\
\ No newline at end of file
+\81@1.1 ghost.txt\82ðGUI\82Å\90Ý\92è\89Â\94\
+\81@1.2 \81u1:1,2:+,3:+\81v\82Æ\82¢\82Á\82½\8c`\8e®\82Ì\81u+\81v\95\\8bL\82É\91Î\89\9e
\ No newline at end of file
diff --git a/SVG.dpr b/SVG.dpr
index 73fe218..c268319 100644 (file)
--- a/SVG.dpr
+++ b/SVG.dpr
@@ -57,7 +57,7 @@ end;
 // CanConfigure\82Í\81AConfigure\82ð\8cÄ\82Î\82ê\82Ä\82â\82é\82±\82Æ\82ª\82 \82é\82©\82Ç\82¤\82©\82ð\95Ô\82·\81B
 function GetVersion(DLLName: PChar; NameLen: integer;
   var Version: integer; var CanConfigure: boolean): integer; cdecl;
-const ThisDLL = 'SVG Surface Loader for Ver. 1.1';
+const ThisDLL = 'SVG Surface Loader Ver. 1.2';
 begin
   Version := 1;
   CanConfigure := true;
@@ -68,7 +68,8 @@ end;
 function LoadDefinitionFile(Ghost: String;
   Surface: integer; FileName: String; out Pos: integer): String;
 var Lines, ALine, SurfaceMap: TStringList;
-    i, j, p: integer;
+    i, j, p, sur, oldpos: integer;
+    posstr: String;
 begin
   // \93à\95\94\8aÖ\90\94\81B\83S\81[\83X\83g\92è\8b`\83t\83@\83C\83\8b\82ð\89ð\90Í\82µ\82Ä\81A
   // \96Ú\93I\82Ì\83S\81[\83X\83g\82Ì\8aÜ\82Ü\82ê\82½\83t\83@\83C\83\8b\82©\82Ç\82¤\82©\94»\92f\82·\82é
@@ -87,7 +88,7 @@ begin
       end;
 
       // \96Ú\93I\82Ì\83S\81[\83X\83g\94­\8c©
-
+      oldpos := 0;
       SurfaceMap := TStringList.Create;
       try
         for i := 1 to Lines.Count-1 do
@@ -99,12 +100,18 @@ begin
               p := System.Pos(':', SurfaceMap[j]);
               if p = 0 then
                 Continue;
-              if StrToInt(Copy(SurfaceMap[j], 1, p-1)) = Surface then
+              sur := StrToInt(Copy(SurfaceMap[j], 1, p-1));
+              posstr := Copy(SurfaceMap[j], p+1, High(integer));
+              if posstr = '+' then
+                Pos := oldpos + 1
+              else
+                Pos := StrToInt(posstr);
+              if sur = Surface then
               begin
-                Pos := StrToInt(Copy(SurfaceMap[j], p+1, High(integer)));
                 Result := ALine[4]; // BMP\83t\83@\83C\83\8b\96¼
                 Exit;
-              end;
+              end else
+                oldpos := Pos;
             except
               on EConvertError do; // nothing. \92P\82È\82é\83R\83\81\83\93\83g\8ds\88µ\82¢
             end;