只放一个控件 siLang1: TsiLang;窗体左键控件, 打开transeditor 保存的时候出错: units\siComp.pas第4353行 // 5.2.5 function TsiCustomLang.SaveToFile(PropType: TStringsType; AFileName: Tstring; Delimiter: Tstring): Integer; var FStream: TFileStream; begin if FileExists(AFileName) then FStream := TFileStream.Create(AFileName, fmOpenReadWrite) else FStream := TFileStream.Create(AFileName, fmCreate); try Result := SaveToStream(PropType, FStream, Delimiter); finally FStream.Free; // **这里面原来是只是FREE,使保存的时候出地址错. end; end;
----------siTransEditor.pas procedure TsiTransEditFrm.sbSaveClick(Sender: TObject); var NewDelim, OldDelim: string; begin if sdSave.Execute then begin {TSI:IGNORE ON} with TMemIniFile.Create(sdSave.FileName) do try OldDelim := ReadString('Options', 'Delimiter', EmptyStr); if OldDelim = EmptyStr then NewDelim := FDefDelim else NewDelim := OldDelim; {TSI:IGNORE OFF} if InputQuery(siLangRT1.GetTextOrDefault('STR_43' // ** 这里原来是if not inputqu. then exit ;如果不选直接跳出本过程, (* 'Save to file' *)), siLangRT1.GetTextOrDefault('STR_44' (* 'Input translations delimiter string:' *)), NewDelim) then begin if (OldDelim <> EmptyStr) and (OldDelim <> NewDelim) and (MessageDlg( Format(siLangRT1.GetTextOrDefault('STR_45' (* 'The existing delimiter in file "%s" differs from new one.' *)) + #13#10 + siLangRT1.GetTextOrDefault('STR_46' (* 'This may cause errors in future reading translation information.' *)) + #13#10 + siLangRT1.GetTextOrDefault('STR_47' (* 'Continue?' *)), [OldDelim]), mtWarning, [mbYes, mbNo], 0) <> mrYes) then Exit; UpdateProperty(FCurrentProperty); FCompOwner.InsertComponent(FComp); if (sfFull in Flags) and (TreeView.Selected.Data = nil) then FComp.SaveAllToFile(sdSave.FileName, NewDelim) else FComp.SaveToFile(FCurrentProperty, sdSave.FileName, NewDelim); end; finally FCompOwner.RemoveComponent(FComp); Free; end; end; end;