mirror of
				https://gitlab.com/freepascal.org/lazarus/lazarus.git
				synced 2025-11-04 14:49:34 +01:00 
			
		
		
		
	IDE: fixed check if .po file changed
git-svn-id: trunk@11493 -
This commit is contained in:
		
							parent
							
								
									d2ed7122f6
								
							
						
					
					
						commit
						00484d3581
					
				@ -2285,7 +2285,7 @@ msgid "Unable to route"
 | 
				
			|||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: ipconst:spngdefilterpass
 | 
					#: ipconst:spngdefilterpass
 | 
				
			||||||
msgid "Unfilering Pass %d  Size: %dx%d  From: %dx%d"
 | 
					msgid "Unfiltering Pass %d  Size: %dx%d  From: %dx%d"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: ipconst:ssslunknowncertificate
 | 
					#: ipconst:ssslunknowncertificate
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					msgid ""
 | 
				
			||||||
 | 
					msgstr ""
 | 
				
			||||||
"MIME-Version: 1.0\n"
 | 
					"MIME-Version: 1.0\n"
 | 
				
			||||||
"Content-Type: text/plain; charset=UTF-8\n"
 | 
					"Content-Type: text/plain; charset=UTF-8\n"
 | 
				
			||||||
"Content-Transfer-Encoding: 8bit\n"
 | 
					"Content-Transfer-Encoding: 8bit\n"
 | 
				
			||||||
 | 
				
			|||||||
@ -227,6 +227,7 @@ procedure ReverseList(List: TList);
 | 
				
			|||||||
procedure ReverseList(List: TFPList);
 | 
					procedure ReverseList(List: TFPList);
 | 
				
			||||||
procedure FreeListObjects(List: TList; FreeList: boolean);
 | 
					procedure FreeListObjects(List: TList; FreeList: boolean);
 | 
				
			||||||
procedure FreeListObjects(List: TFPList; FreeList: boolean);
 | 
					procedure FreeListObjects(List: TFPList; FreeList: boolean);
 | 
				
			||||||
 | 
					function CompareMemStreamText(s1, s2: TMemoryStream): Boolean;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
implementation
 | 
					implementation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2507,5 +2508,71 @@ begin
 | 
				
			|||||||
  Result[DestPos]:='$';
 | 
					  Result[DestPos]:='$';
 | 
				
			||||||
end;
 | 
					end;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function CompareMemStreamText(s1, s2: TMemoryStream): Boolean;
 | 
				
			||||||
 | 
					// compare text in s2, s2 ignoring line ends
 | 
				
			||||||
 | 
					var
 | 
				
			||||||
 | 
					  p1: PChar;
 | 
				
			||||||
 | 
					  p2: PChar;
 | 
				
			||||||
 | 
					  Count1: Int64;
 | 
				
			||||||
 | 
					  Count2: Int64;
 | 
				
			||||||
 | 
					begin
 | 
				
			||||||
 | 
					  if s1.Memory=nil then begin
 | 
				
			||||||
 | 
					    Result:=s2.Memory=nil;
 | 
				
			||||||
 | 
					  end else begin
 | 
				
			||||||
 | 
					    if s2.Memory=nil then begin
 | 
				
			||||||
 | 
					      Result:=false;
 | 
				
			||||||
 | 
					    end else begin
 | 
				
			||||||
 | 
					      p1:=PChar(s1.Memory);
 | 
				
			||||||
 | 
					      p2:=PChar(s2.Memory);
 | 
				
			||||||
 | 
					      Count1:=s1.Size;
 | 
				
			||||||
 | 
					      Count2:=s2.Size;
 | 
				
			||||||
 | 
					      repeat
 | 
				
			||||||
 | 
					        if not (p1^ in [#10,#13]) then begin
 | 
				
			||||||
 | 
					          // p1 has normal char
 | 
				
			||||||
 | 
					          if p1^=p2^ then begin
 | 
				
			||||||
 | 
					            inc(p1);
 | 
				
			||||||
 | 
					            dec(Count1);
 | 
				
			||||||
 | 
					            inc(p2);
 | 
				
			||||||
 | 
					            dec(Count2);
 | 
				
			||||||
 | 
					          end else begin
 | 
				
			||||||
 | 
					            exit(false);
 | 
				
			||||||
 | 
					          end;
 | 
				
			||||||
 | 
					        end else begin
 | 
				
			||||||
 | 
					          // p1 has a newline
 | 
				
			||||||
 | 
					          if (p2^ in [#10,#13]) then begin
 | 
				
			||||||
 | 
					            // p2 has a newline
 | 
				
			||||||
 | 
					            if (Count1>1) and (p1[1] in [#10,#13]) and (p1[0]<>p1[1]) then
 | 
				
			||||||
 | 
					            begin
 | 
				
			||||||
 | 
					              inc(p1,2);
 | 
				
			||||||
 | 
					              dec(Count1,2);
 | 
				
			||||||
 | 
					            end else begin
 | 
				
			||||||
 | 
					              inc(p1);
 | 
				
			||||||
 | 
					              dec(Count1);
 | 
				
			||||||
 | 
					            end;
 | 
				
			||||||
 | 
					            if (Count2>1) and (p2[1] in [#10,#13]) and (p2[0]<>p2[1]) then
 | 
				
			||||||
 | 
					            begin
 | 
				
			||||||
 | 
					              inc(p2,2);
 | 
				
			||||||
 | 
					              dec(Count2,2);
 | 
				
			||||||
 | 
					            end else begin
 | 
				
			||||||
 | 
					              inc(p2);
 | 
				
			||||||
 | 
					              dec(Count2);
 | 
				
			||||||
 | 
					            end;
 | 
				
			||||||
 | 
					          end else begin
 | 
				
			||||||
 | 
					            // p1 has newline, p2 not
 | 
				
			||||||
 | 
					            exit(false);
 | 
				
			||||||
 | 
					          end;
 | 
				
			||||||
 | 
					        end;
 | 
				
			||||||
 | 
					        if Count1=0 then begin
 | 
				
			||||||
 | 
					          Result:=Count2=0;
 | 
				
			||||||
 | 
					          exit;
 | 
				
			||||||
 | 
					        end else if Count2=0 then begin
 | 
				
			||||||
 | 
					          exit(false);
 | 
				
			||||||
 | 
					        end;
 | 
				
			||||||
 | 
					      until false;
 | 
				
			||||||
 | 
					    end;
 | 
				
			||||||
 | 
					  end;
 | 
				
			||||||
 | 
					end;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
end.
 | 
					end.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -30,8 +30,9 @@ unit IDETranslations;
 | 
				
			|||||||
interface
 | 
					interface
 | 
				
			||||||
 | 
					
 | 
				
			||||||
uses
 | 
					uses
 | 
				
			||||||
  Classes, SysUtils, GetText, LCLProc, Translations, FileUtil, avl_tree,
 | 
					  Classes, SysUtils, GetText, LCLProc, Translations,
 | 
				
			||||||
  LazarusIDEStrConsts;
 | 
					  IDEProcs, FileUtil,
 | 
				
			||||||
 | 
					  avl_tree, LazarusIDEStrConsts;
 | 
				
			||||||
  { IDE Language (Human, not computer) }
 | 
					  { IDE Language (Human, not computer) }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type
 | 
					type
 | 
				
			||||||
@ -300,71 +301,6 @@ var
 | 
				
			|||||||
    NewContent.Write(e[1],length(e));
 | 
					    NewContent.Write(e[1],length(e));
 | 
				
			||||||
  end;
 | 
					  end;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  function CompareMemStreamText(s1, s2: TMemoryStream): Boolean;
 | 
					 | 
				
			||||||
  // compare text in s2, s2 ignoring line ends
 | 
					 | 
				
			||||||
  var
 | 
					 | 
				
			||||||
    p1: PChar;
 | 
					 | 
				
			||||||
    p2: PChar;
 | 
					 | 
				
			||||||
    Count1: Int64;
 | 
					 | 
				
			||||||
    Count2: Int64;
 | 
					 | 
				
			||||||
  begin
 | 
					 | 
				
			||||||
    if s1.Memory=nil then begin
 | 
					 | 
				
			||||||
      Result:=s2.Memory=nil;
 | 
					 | 
				
			||||||
    end else begin
 | 
					 | 
				
			||||||
      if s2.Memory=nil then begin
 | 
					 | 
				
			||||||
        Result:=false;
 | 
					 | 
				
			||||||
      end else begin
 | 
					 | 
				
			||||||
        p1:=PChar(s1.Memory);
 | 
					 | 
				
			||||||
        p2:=PChar(s2.Memory);
 | 
					 | 
				
			||||||
        Count1:=s1.Size;
 | 
					 | 
				
			||||||
        Count2:=s2.Size;
 | 
					 | 
				
			||||||
        repeat
 | 
					 | 
				
			||||||
          if not (p1^ in [#10,#13]) then begin
 | 
					 | 
				
			||||||
            // p1 has normal char
 | 
					 | 
				
			||||||
            if p1^=p2^ then begin
 | 
					 | 
				
			||||||
              inc(p1);
 | 
					 | 
				
			||||||
              dec(Count1);
 | 
					 | 
				
			||||||
              inc(p2);
 | 
					 | 
				
			||||||
              dec(Count2);
 | 
					 | 
				
			||||||
            end else begin
 | 
					 | 
				
			||||||
              exit(false);
 | 
					 | 
				
			||||||
            end;
 | 
					 | 
				
			||||||
          end else begin
 | 
					 | 
				
			||||||
            // p1 has a newline
 | 
					 | 
				
			||||||
            if (p2^ in [#10,#13]) then begin
 | 
					 | 
				
			||||||
              // p2 has a newline
 | 
					 | 
				
			||||||
              if (Count1>1) and (p1[1] in [#10,#13]) and (p1[0]<>p1[1]) then
 | 
					 | 
				
			||||||
              begin
 | 
					 | 
				
			||||||
                inc(p1,2);
 | 
					 | 
				
			||||||
                dec(Count1,2);
 | 
					 | 
				
			||||||
              end else begin
 | 
					 | 
				
			||||||
                inc(p1);
 | 
					 | 
				
			||||||
                dec(Count1);
 | 
					 | 
				
			||||||
              end;
 | 
					 | 
				
			||||||
              if (Count2>1) and (p2[1] in [#10,#13]) and (p2[0]<>p2[1]) then
 | 
					 | 
				
			||||||
              begin
 | 
					 | 
				
			||||||
                inc(p2,2);
 | 
					 | 
				
			||||||
                dec(Count2,2);
 | 
					 | 
				
			||||||
              end else begin
 | 
					 | 
				
			||||||
                inc(p2);
 | 
					 | 
				
			||||||
                dec(Count2);
 | 
					 | 
				
			||||||
              end;
 | 
					 | 
				
			||||||
            end else begin
 | 
					 | 
				
			||||||
              // p1 has newline, p2 not
 | 
					 | 
				
			||||||
              exit(false);
 | 
					 | 
				
			||||||
            end;
 | 
					 | 
				
			||||||
          end;
 | 
					 | 
				
			||||||
          if Count1=0 then begin
 | 
					 | 
				
			||||||
            Result:=Count2=0;
 | 
					 | 
				
			||||||
            exit;
 | 
					 | 
				
			||||||
          end else if Count2=0 then begin
 | 
					 | 
				
			||||||
            exit(false);
 | 
					 | 
				
			||||||
          end;
 | 
					 | 
				
			||||||
        until false;
 | 
					 | 
				
			||||||
      end;
 | 
					 | 
				
			||||||
    end;
 | 
					 | 
				
			||||||
  end;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
begin
 | 
					begin
 | 
				
			||||||
  Result:=false;
 | 
					  Result:=false;
 | 
				
			||||||
  ContentChanged:=false;
 | 
					  ContentChanged:=false;
 | 
				
			||||||
@ -427,7 +363,7 @@ begin
 | 
				
			|||||||
      if CheckContentChange and FileExists(OutFilename) then begin
 | 
					      if CheckContentChange and FileExists(OutFilename) then begin
 | 
				
			||||||
        OldContent:=TMemoryStream.Create;
 | 
					        OldContent:=TMemoryStream.Create;
 | 
				
			||||||
        OldContent.LoadFromFile(OutFilename);
 | 
					        OldContent.LoadFromFile(OutFilename);
 | 
				
			||||||
        ContentChanged:=CompareMemStreamText(NewContent,OldContent);
 | 
					        ContentChanged:=not CompareMemStreamText(NewContent,OldContent);
 | 
				
			||||||
        FreeAndNil(OldContent);
 | 
					        FreeAndNil(OldContent);
 | 
				
			||||||
      end else begin
 | 
					      end else begin
 | 
				
			||||||
        ContentChanged:=true;
 | 
					        ContentChanged:=true;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user