another time, and thus successively, and had that to create new link.I decided for the hand in the mass and to study the code.Then I created following the functions:Please, sees the unit mainwine.pas below listedI observed that the problem happens whenever the class TOpenDialog and TSaveDialog is used.Unit that this the code to save the projects, packages, etc is main.pp.Then, is alone to include this unit (mainwine) in the uses clause of unit main.pp and to call these functions before opening and saving its archives in IDE.It creates a directive USEWINE:{$DEFINE USEWINE}Now it implements in the cases below:procedure TMainIDE.mnuOpenClicked(Sender: TObject);...For I := 0 to OpenDialog.Files.Count-1 doBeginAFilename:=CleanAndExpandFilename(OpenDialog.Files.Strings[i]); {$IFDEF USEWINE} AFilename:=mainwine.WineValidFile(AFilename); {$ENDIF}... function TMainIDE.DoShowSaveFileAsDialog(AnUnitInfo: TUnitInfo;var ResourceCode: TCodeBuffer): TModalResult;... NewFilename:=ExpandFileNameUTF8(SaveDialog.Filename); {$IFDEF USEWINE} NewFilename:=WineValidSaveFile(NewFilename); {$ENDIF}...if ExtractFileExt(NewFilename)='' then begin NewFilename:=NewFilename+SaveAsFileExt; {$IFDEF USEWINE} NewFilename:=WineValidSaveFile(NewFilename); {$ENDIF}end;...{$IFDEF USEWINE}NewFilename:=WineValidSaveFile(NewFilename);{$ENDIF}NewFilePath:=ExtractFilePath(NewFilename);...function TMainIDE.DoShowSaveProjectAsDialog: TModalResult;... NewFilename:=ExpandFileNameUTF8(SaveDialog.Filename); {$IFDEF USEWINE} NewFilename:=WineValidSaveFile(NewFilename); {$ENDIF} if not FilenameIsAbsolute(NewFilename) then RaiseException('TMainIDE.DoShowSaveProjectAsDialog: buggy ExpandFileNameUTF8'); NewProgramName:=ExtractFileNameOnly(NewFilename);...I did not test all the cases, therefore for me of this skill he decided great part of the problem, and the code of IDE is very complex, and extensive.But a solution for the problem, and those developers is registered that collaborate with the project and have more affinity with the code of unit main.pp and others units that they make the IDE, can appreciate and it will be the case, to implement definitively, and thus to offer to end user a new alternative.Until the next one.unit mainwine; {$mode objfpc}{$H+}interfaceuses Classes, SysUtils; function WineValidFile(filename1:string):string; function WineValidSaveFile(filename1:string):string;implementationfunction WineValidFile(filename1:string):string;varwineFile,wineFile2,winePath,winePath2:string;wineListChar:TStringlist;pathLen,charCount:integer;beginwineListChar:=TStringlist.Create;Result:=filename1;if not SysUtils.FileExists(filename1) thenbegin WinePath:=SysUtils.ExtractFilePath(filename1); PathLen:=length(WinePath); WinePath:=copy(WinePath,1,PathLen-1); wineFile:=SysUtils.ExtractFileName(filename1); for charCount:=32 to 127 do begin wineFile2:=WinePath+chr(charCount)+'\'+wineFile; if fileexists(wineFile2) then begin Result:=wineFile2; break; end; end;end;end;function WineValidSaveFile(filename1:string):string;varwineFile,wineFile2,winePath,winePath2:string;wineListChar:TStringlist;pathLen,charCount:integer;beginwineListChar:=TStringlist.Create;Result:=filename1;if not SysUtils.FileExists(filename1) thenbegin WinePath:=SysUtils.ExtractFilePath(filename1); PathLen:=length(WinePath); WinePath:=copy(WinePath,1,PathLen-1); wineFile:=SysUtils.ExtractFileName(filename1); for charCount:=32 to 127 do begin wineFile2:=WinePath+chr(charCount)+'\'+wineFile; if DirectoryExists(WinePath+chr(charCount)+'\') then begin Result:=wineFile2; break; end; end;end;end;end.