FD connect как заменить абсолютный на относительный путь

Добрый день! Пытаюсь FD connect как заменить абсолютный, на относительный путь при помощи Extractfilepath(paramstr(0)) но когда заменяю вот что начинает рассказывать компилятор:

[5016A19F]{rtl260.bpl  } System.Classes.TParser.ErrorStr (Line 13579, "System.Classes.pas" + 6) + $7
[5016A0E8]{rtl260.bpl  } System.Classes.TParser.ErrorFmt (Line 13566, "System.Classes.pas" + 0) + $4
[5016A007]{rtl260.bpl  } System.Classes.TParser.CheckToken (Line 13548, "System.Classes.pas" + 8) + $5
[5016D68E]{rtl260.bpl  } System.Classes.CombineString (Line 14435, "System.Classes.pas" + 7) + $7
[5016D714]{rtl260.bpl  } System.Classes.ConvertValue (Line 14441, "System.Classes.pas" + 2) + $10
[5016DA68]{rtl260.bpl  } System.Classes.ConvertValue (Line 14484, "System.Classes.pas" + 45) + $10
[5016DD43]{rtl260.bpl  } System.Classes.ConvertProperty (Line 14531, "System.Classes.pas" + 15) + $6
[5016DDE9]{rtl260.bpl  } System.Classes.ConvertObject (Line 14548, "System.Classes.pas" + 11) + $6
[5016DE42]{rtl260.bpl  } System.Classes.ConvertObject (Line 14554, "System.Classes.pas" + 17) + $10
[5016DF87]{rtl260.bpl  } System.Classes.ObjectTextToBinary (Line 14569, "System.Classes.pas" + 11) + $D
[5016E077]{rtl260.bpl  } System.Classes.ObjectTextToResource (Line 14618, "System.Classes.pas" + 4) + $7
[5016D36A]{rtl260.bpl  } System.Classes.InternalTextToBinary (Line 14351, "System.Classes.pas" + 25) + $7
[5016E0D8]{rtl260.bpl  } System.Classes.TestStreamFormat (Line 14636, "System.Classes.pas" + 0) + $0
[207C813F]{coreide260.bpl} EditorBuffer.TEditBuffer.OpenEditorStream (Line 3474, "EditorBuffer.pas" + 10) + $3
[205C4DE5]{coreide260.bpl} ComInOut.OpenEditor (Line 408, "ComInOut.pas" + 28) + $B
[205C53F7]{coreide260.bpl} ComInOut.CFileOpen (Line 558, "ComInOut.pas" + 23) + $F
[205C5608]{coreide260.bpl} ComInOut.CCFileOpen (Line 616, "ComInOut.pas" + 2) + $18
[205C5682]{coreide260.bpl} ComInOut.BFileOpenWithBOM (Line 632, "ComInOut.pas" + 4) + $7
[50096F99]{rtl260.bpl  } System.SysUtils.StrLCopy (Line 11692, "System.SysUtils.pas" + 5) + $8
[50CC158B]{vcl260.bpl  } Vcl.Graphics.TCanvas.RequiredState (Line 4224, "Vcl.Graphics.pas" + 12) + $7
[50CE4FAA]{vcl260.bpl  } Vcl.Controls.TControl.WndProc (Line 7387, "Vcl.Controls.pas" + 91) + $6
[50DD5A6B]{vcl260.bpl  } Vcl.Themes.TUxThemeStyle.DoDrawText (Line 2917, "Vcl.Themes.pas" + 2) + $28
[50DD51D5]{vcl260.bpl  } Vcl.Themes.TCustomStyleServices.DrawText (Line 2628, "Vcl.Themes.pas" + 1) + $19
[50CC158B]{vcl260.bpl  } Vcl.Graphics.TCanvas.RequiredState (Line 4224, "Vcl.Graphics.pas" + 12) + $7
[50D053F8]{vcl260.bpl  } Vcl.StdCtrls.TCustomLabel.DoDrawThemeTextEx (Line 2215, "Vcl.StdCtrls.pas" + 9) + $3F
[50CC158B]{vcl260.bpl  } Vcl.Graphics.TCanvas.RequiredState (Line 4224, "Vcl.Graphics.pas" + 12) + $7
[50CE9CBA]{vcl260.bpl  } Vcl.Controls.TWinControl.DefaultHandler (Line 10286, "Vcl.Controls.pas" + 30) + $19
[50E370E6]{vcl260.bpl  } Vcl.Forms.TCustomForm.DefaultHandler (Line 5923, "Vcl.Forms.pas" + 11) + $4
[50CE4FAA]{vcl260.bpl  } Vcl.Controls.TControl.WndProc (Line 7387, "Vcl.Controls.pas" + 91) + $6
[11CB88F7]{themeloader260.bpl} Idetheme.Vclstylehooks.TIDEStyleHook.HandleMessage + $B7
[50E3E6C8]{vcl260.bpl  } Vcl.Forms.TApplication.ProcessMessage (Line 10703, "Vcl.Forms.pas" + 2) + $9
[50E3E7D2]{vcl260.bpl  } Vcl.Forms.TApplication.ProcessMessages (Line 10746, "Vcl.Forms.pas" + 1) + $4
[2234677B]{delphide260.bpl} DelphiProject.TDelphiCodeIWin32Project._Release (Line 391, "DelphiProject.pas" + 1) + $1
[50067E88]{rtl260.bpl  } System.@IntfClear (Line 38150, "System.pas" + 10) + $0
[20534C14]{coreide260.bpl} ComPrgrs.TProgressForm.DoUpdate (Line 429, "ComPrgrs.pas" + 19) + $51
[205357BE]{coreide260.bpl} ComPrgrs.TProgressMonitor.MainThreadUpdate (Line 709, "ComPrgrs.pas" + 6) + $1
[50170E0C]{rtl260.bpl  } System.Classes.TThread.Synchronize (Line 15623, "System.Classes.pas" + 5) + $4
[500640D8]{rtl260.bpl  } System.@FinalizeArray (Line 32811, "System.pas" + 144) + $0
[50063F98]{rtl260.bpl  } System.@FinalizeRecord (Line 32509, "System.pas" + 41) + $0
[50171054]{rtl260.bpl  } System.Classes.TThread.Synchronize (Line 15679, "System.Classes.pas" + 6) + $22
[2234677B]{delphide260.bpl} DelphiProject.TDelphiCodeIWin32Project._Release (Line 391, "DelphiProject.pas" + 1) + $1
[50067E88]{rtl260.bpl  } System.@IntfClear (Line 38150, "System.pas" + 10) + $0
[20534127]{coreide260.bpl} ComPrgrs.CompilerUpdateProgress (Line 207, "ComPrgrs.pas" + 34) + $63
[205C69E5]{coreide260.bpl} ComInOut.Progress (Line 1284, "ComInOut.pas" + 5) + $B
[205C6A00]{coreide260.bpl} ComInOut.Progress (Line 1287, "ComInOut.pas" + 8) + $8
[205C6A1E]{coreide260.bpl} ComInOut.Progress (Line 1289, "ComInOut.pas" + 10) + $14
[205C6B8F]{coreide260.bpl} ComInOut.UIBProgress (Line 1340, "ComInOut.pas" + 32) + $E
[205C6CC8]{coreide260.bpl} ComInOut.BProgress (Line 1385, "ComInOut.pas" + 35) + $F
[205C6CD3]{coreide260.bpl} ComInOut.BProgress (Line 1386, "ComInOut.pas" + 36) + $8
[21D08688]{delphicoreide260.bpl} BasePasComIntf.TCompiler.CompilerCompile (Line 715, "BasePasComIntf.pas" + 6) + $39
[21C7AF5E]{delphicoreide260.bpl} PasNativeCompilerAdapter.TCompilerAdapter.CompileCmdLine (Line 161, "PasNativeCompilerAdapter.pas" + 1) + $8
[21C7B37D]{delphicoreide260.bpl} PasNativeCompilerAdapter.TCompilerAdapter.CompilerCompile (Line 403, "PasNativeCompilerAdapter.pas" + 1) + $5
[21C7EE07]{delphicoreide260.bpl} CommonOptions.TDelphiMsBuildHost.DccCompile (Line 375, "CommonOptions.pas" + 18) + $3D
[20A347A8]{coreide260.bpl} MSBuildInterop.TMSBuildProjectInterop.Build (Line 121, "MSBuildInterop.pas" + 6) + $37
[50067E88]{rtl260.bpl  } System.@IntfClear (Line 38150, "System.pas" + 10) + $0
[20543641]{coreide260.bpl} MSBProjectWrapper.TNativeMSBuildProject.Build (Line 281, "MSBProjectWrapper.pas" + 7) + $1C
[2065ACC1]{coreide260.bpl} ProjectModule.TCustomCodeIProject.GetMSProjectFile (Line 2480, "ProjectModule.pas" + 1) + $F
[21D07623]{delphicoreide260.bpl} BasePasComIntf.TCompiler.DoCompile (Line 397, "BasePasComIntf.pas" + 47) + $38
[21D08356]{delphicoreide260.bpl} BasePasComIntf.TCompiler.Compile (Line 648, "BasePasComIntf.pas" + 15) + $8
[21C7AEBF]{delphicoreide260.bpl} PasNativeCompilerAdapter.TCompilerAdapter.Compile (Line 153, "PasNativeCompilerAdapter.pas" + 15) + $C
[21CAB260]{delphicoreide260.bpl} PasMgr.TPascalProjectUpdater.DoCompile (Line 10694, "PasMgr.pas" + 12) + $D
[21CAF951]{delphicoreide260.bpl} PasMgr.TPascalProjectUpdater.CompileProject (Line 12039, "PasMgr.pas" + 4) + $A
[20554752]{coreide260.bpl} ProjectGroupBuilder.TProjectGroupBuilder.MakeThingsHappen (Line 321, "ProjectGroupBuilder.pas" + 121) + $22
[500FA1ED]{rtl260.bpl  } System.Rtti.RawInvoke (Line 7827, "System.Rtti.pas" + 47) + $1
[500FA5EF]{rtl260.bpl  } System.Rtti.Invoke (Line 8048, "System.Rtti.pas" + 79) + $A
[500F1148]{rtl260.bpl  } System.Rtti.TRttiInstanceMethodEx.DispatchInvoke (Line 5947, "System.Rtti.pas" + 101) + $24
[500FAAB4]{rtl260.bpl  } System.Rtti.TRttiMethod.Invoke (Line 9634, "System.Rtti.pas" + 2) + $1
[004D50D0]{bds.exe     } SanctuaryChecker.TLicenseManager.TryAction (Line 1742, "SanctuaryChecker.pas" + 14) + $14
[205542F7]{coreide260.bpl} ProjectGroupBuilder.TProjectGroupBuilder.DoBuild (Line 187, "ProjectGroupBuilder.pas" + 3) + $1
[205471CC]{coreide260.bpl} BuildHost.TBuildHost.Perform (Line 371, "BuildHost.pas" + 21) + $1
[205341E2]{coreide260.bpl} ComPrgrs.TProgressForm.StartCompile (Line 232, "ComPrgrs.pas" + 8) + $10
[20534FC2]{coreide260.bpl} ComPrgrs.TProgressForm.HandleCompileMessage (Line 498, "ComPrgrs.pas" + 0) + $6
[50CE4FAA]{vcl260.bpl  } Vcl.Controls.TControl.WndProc (Line 7387, "Vcl.Controls.pas" + 91) + $6
[50067E88]{rtl260.bpl  } System.@IntfClear (Line 38150, "System.pas" + 10) + $0
[500640D8]{rtl260.bpl  } System.@FinalizeArray (Line 32811, "System.pas" + 144) + $0
[11CF1AB2]{themeloader260.bpl} Idetheme.Stylemanager.TIDEThemeStyleEngine.UnRegisterSysStyleHook + $106
[50CE9620]{vcl260.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10089, "Vcl.Controls.pas" + 10) + $48
[50CE9BAB]{vcl260.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10245, "Vcl.Controls.pas" + 166) + $6
[50067E88]{rtl260.bpl  } System.@IntfClear (Line 38150, "System.pas" + 10) + $0
[5005FE07]{rtl260.bpl  } System.TObject.Dispatch (Line 18332, "System.pas" + 11) + $0
[11CB8E3E]{themeloader260.bpl} Idetheme.Vclstylehooks.TIDEStyleHook.WndProc + $7A
[50067E88]{rtl260.bpl  } System.@IntfClear (Line 38150, "System.pas" + 10) + $0
[11CB88F7]{themeloader260.bpl} Idetheme.Vclstylehooks.TIDEStyleHook.HandleMessage + $B7
[50067E88]{rtl260.bpl  } System.@IntfClear (Line 38150, "System.pas" + 10) + $0
[500640D8]{rtl260.bpl  } System.@FinalizeArray (Line 32811, "System.pas" + 144) + $0
[11CF1AB2]{themeloader260.bpl} Idetheme.Stylemanager.TIDEThemeStyleEngine.UnRegisterSysStyleHook + $106
[50CE9620]{vcl260.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10089, "Vcl.Controls.pas" + 10) + $48
[50CE9BAB]{vcl260.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10245, "Vcl.Controls.pas" + 166) + $6
[50E34DB9]{vcl260.bpl  } Vcl.Forms.TCustomForm.WndProc (Line 4629, "Vcl.Forms.pas" + 209) + $5
[50CE9178]{vcl260.bpl  } Vcl.Controls.TWinControl.MainWndProc (Line 9944, "Vcl.Controls.pas" + 3) + $6
[50174370]{rtl260.bpl  } System.Classes.CalcJmpOffset (Line 17554, "System.Classes.pas" + 0) + $0
[50E3E7A7]{vcl260.bpl  } Vcl.Forms.TApplication.ProcessMessage (Line 10724, "Vcl.Forms.pas" + 23) + $1
[50E3E7EA]{vcl260.bpl  } Vcl.Forms.TApplication.HandleMessage (Line 10754, "Vcl.Forms.pas" + 1) + $4
[50E39B8A]{vcl260.bpl  } Vcl.Forms.TCustomForm.ShowModal (Line 7456, "Vcl.Forms.pas" + 33) + $5
[20546C1A]{coreide260.bpl} BuildHost.TBuildHost.Build (Line 231, "BuildHost.pas" + 55) + $D
[205467C7]{coreide260.bpl} BuildHost.Build (Line 136, "BuildHost.pas" + 4) + $F
[20554107]{coreide260.bpl} ProjectGroupBuilder.BuildProjects (Line 146, "ProjectGroupBuilder.pas" + 1) + $1C
[20592F8B]{coreide260.bpl} ProjectGroup.TProjectGroup.CompileProjects (Line 805, "ProjectGroup.pas" + 1) + $27
[20592CA2]{coreide260.bpl} ProjectGroup.TProjectGroup.CompileActive (Line 754, "ProjectGroup.pas" + 20) + $17
[20599E29]{coreide260.bpl} ProjectGroup.TProjectGroupWrapper.CompileActive (Line 2865, "ProjectGroup.pas" + 0) + $9
[004AEAF2]{bds.exe     } AppMain.TAppBuilder.Compile (Line 3613, "AppMain.pas" + 2) + $1
[004A8B81]{bds.exe     } AppMain.TBorlandIDE.Compile (Line 1171, "AppMain.pas" + 2) + $6
[2086504A]{coreide260.bpl} DebuggerMgr.TDebuggerMgr.MakeCurrentProject (Line 1523, "DebuggerMgr.pas" + 111) + $2
[208667E9]{coreide260.bpl} DebuggerMgr.TDebuggerMgr.Run (Line 2048, "DebuggerMgr.pas" + 2) + $A
[20866872]{coreide260.bpl} DebuggerMgr.TDebuggerMgr.RunNoDebug (Line 2076, "DebuggerMgr.pas" + 4) + $B
[004B7D63]{bds.exe     } AppMain.TAppBuilder.RunRunNoDebugCommandExecute (Line 6778, "AppMain.pas" + 0) + $B
[5017361B]{rtl260.bpl  } System.Classes.TBasicAction.Execute (Line 17028, "System.Classes.pas" + 7) + $3
[50CCDE62]{vcl260.bpl  } Vcl.ActnList.TCustomAction.Execute (Line 261, "Vcl.ActnList.pas" + 19) + $35
[50173483]{rtl260.bpl  } System.Classes.TBasicActionLink.SetAction (Line 16939, "System.Classes.pas" + 0) + $3
[50CE54EC]{vcl260.bpl  } Vcl.Controls.TControl.Click (Line 7501, "Vcl.Controls.pas" + 7) + $7
[50D644BC]{vcl260.bpl  } Vcl.ComCtrls.TToolButton.Click (Line 21635, "Vcl.ComCtrls.pas" + 0) + $0
[50CE59B7]{vcl260.bpl  } Vcl.Controls.TControl.WMLButtonUp (Line 7642, "Vcl.Controls.pas" + 7) + $6
[50CE4FAA]{vcl260.bpl  } Vcl.Controls.TControl.WndProc (Line 7387, "Vcl.Controls.pas" + 91) + $6
[5005FE07]{rtl260.bpl  } System.TObject.Dispatch (Line 18332, "System.pas" + 11) + $0
[11CB8E3E]{themeloader260.bpl} Idetheme.Vclstylehooks.TIDEStyleHook.WndProc + $7A
[50067E88]{rtl260.bpl  } System.@IntfClear (Line 38150, "System.pas" + 10) + $0
[11CB88F7]{themeloader260.bpl} Idetheme.Vclstylehooks.TIDEStyleHook.HandleMessage + $B7
[50067E88]{rtl260.bpl  } System.@IntfClear (Line 38150, "System.pas" + 10) + $0
[500640D8]{rtl260.bpl  } System.@FinalizeArray (Line 32811, "System.pas" + 144) + $0
[50CE4BE4]{vcl260.bpl  } Vcl.Controls.TControl.Perform (Line 7165, "Vcl.Controls.pas" + 10) + $8
[50CE926E]{vcl260.bpl  } Vcl.Controls.GetControlAtPos (Line 9967, "Vcl.Controls.pas" + 4) + $75
[50CE9336]{vcl260.bpl  } Vcl.Controls.TWinControl.ControlAtPos (Line 9990, "Vcl.Controls.pas" + 13) + $E
[50CE4BE4]{vcl260.bpl  } Vcl.Controls.TControl.Perform (Line 7165, "Vcl.Controls.pas" + 10) + $8
[50CE9404]{vcl260.bpl  } Vcl.Controls.TWinControl.IsControlMouseMsg (Line 10014, "Vcl.Controls.pas" + 15) + $29
[50CE9A0C]{vcl260.bpl  } Vcl.Controls.TWinControl.WndProc (Line 10191, "Vcl.Controls.pas" + 112) + $6
[50D665E9]{vcl260.bpl  } Vcl.ComCtrls.TToolBar.UpdateButtonState (Line 22913, "Vcl.ComCtrls.pas" + 11) + $27
[50D6662A]{vcl260.bpl  } Vcl.ComCtrls.TToolBar.UpdateButtonStates (Line 22924, "Vcl.ComCtrls.pas" + 3) + $4
[50D69060]{vcl260.bpl  } Vcl.ComCtrls.TToolBar.WndProc (Line 24514, "Vcl.ComCtrls.pas" + 104) + $6
[50CE9178]{vcl260.bpl  } Vcl.Controls.TWinControl.MainWndProc (Line 9944, "Vcl.Controls.pas" + 3) + $6
[50174370]{rtl260.bpl  } System.Classes.CalcJmpOffset (Line 17554, "System.Classes.pas" + 0) + $0
[50E3E7A7]{vcl260.bpl  } Vcl.Forms.TApplication.ProcessMessage (Line 10724, "Vcl.Forms.pas" + 23) + $1
[50E3E7EA]{vcl260.bpl  } Vcl.Forms.TApplication.HandleMessage (Line 10754, "Vcl.Forms.pas" + 1) + $4
[50E3EB1D]{vcl260.bpl  } Vcl.Forms.TApplication.Run (Line 10892, "Vcl.Forms.pas" + 26) + $3
[00517FFA]{bds.exe     } bds.bds (Line 214, "" + 7) + $7

1

Так и где код или хотя бы эта line 180?)

1 лайк
object Form2: TForm2
  Left = 0
  Top = 0
  Caption = 'Server'
  ClientHeight = 463
  ClientWidth = 859
  FormFactor.Width = 320
  FormFactor.Height = 480
  FormFactor.Devices = [Desktop]
  OnCreate = FormCreate
  DesignerMasterStyle = 0
  object Memo1: TMemo
    Touch.InteractiveGestures = [Pan, LongTap, DoubleTap]
    DataDetectorTypes = []
    Position.Y = 240.000000000000000000
    Size.Width = 841.000000000000000000
    Size.Height = 114.000000000000000000
    Size.PlatformDefault = False
    TabOrder = 0
    Viewport.Width = 837.000000000000000000
    Viewport.Height = 110.000000000000000000
  end
  object Button1: TButton
    Position.X = 768.000000000000000000
    Position.Y = 424.000000000000000000
    TabOrder = 1
    Text = 'Button1'
    OnClick = Button1Click
  end
  object Edit1: TEdit
    Touch.InteractiveGestures = [LongTap, DoubleTap]
    TabOrder = 2
    Position.X = 56.000000000000000000
    Position.Y = 424.000000000000000000
    Size.Width = 700.000000000000000000
    Size.Height = 25.000000000000000000
    Size.PlatformDefault = False
  end
  object Label1: TLabel
    Position.X = 8.000000000000000000
    Position.Y = 424.000000000000000000
    Size.Width = 65.000000000000000000
    Size.Height = 25.000000000000000000
    Size.PlatformDefault = False
    Text = 'Label1'
    TabOrder = 3
  end
  object Server_On: TButton
    Position.X = 8.000000000000000000
    Position.Y = 64.000000000000000000
    TabOrder = 5
    Text = 'Server on'
    OnClick = Server_OnClick
  end
  object Server_Off: TButton
    Position.X = 8.000000000000000000
    Position.Y = 96.000000000000000000
    TabOrder = 6
    Text = 'Server off'
    OnClick = Server_OffClick
  end
  object Label2: TLabel
    Position.X = 8.000000000000000000
    Position.Y = 136.000000000000000000
    Size.Width = 185.000000000000000000
    Size.Height = 17.000000000000000000
    Size.PlatformDefault = False
    Text = 'Label2'
    TabOrder = 8
  end
  object Timer1: TTimer
    Interval = 1
    OnTimer = Timer1Timer
    Left = 96
    Top = 176
  end
  object StringGrid1: TStringGrid
    CanFocus = True
    ClipChildren = True
    Position.X = 200.000000000000000000
    Position.Y = 8.000000000000000000
    Size.Width = 505.000000000000000000
    Size.Height = 153.000000000000000000
    Size.PlatformDefault = False
    TabOrder = 15
    RowCount = 4
    Viewport.Width = 501.000000000000000000
    Viewport.Height = 128.000000000000000000
  end
  object IsertSTr: TButton
    Position.X = 200.000000000000000000
    Position.Y = 216.000000000000000000
    TabOrder = 28
    Text = 'IsertSTr'
    OnClick = IsertSTrClick
  end
  object PostStr: TButton
    Position.X = 296.000000000000000000
    Position.Y = 216.000000000000000000
    TabOrder = 29
    Text = 'PostStr'
    OnClick = PostStrClick
  end
  object deleteStr: TButton
    Position.X = 392.000000000000000000
    Position.Y = 216.000000000000000000
    TabOrder = 30
    Text = 'deleteStr'
    OnClick = deleteStrClick
  end
  object Button7: TButton
    Position.X = 488.000000000000000000
    Position.Y = 216.000000000000000000
    TabOrder = 31
    Text = 'Button7'
  end
  object Label3: TLabel
    Position.X = 8.000000000000000000
    Position.Y = 160.000000000000000000
    Size.Width = 185.000000000000000000
    Size.Height = 17.000000000000000000
    Size.PlatformDefault = False
    Text = 'Label3'
    TabOrder = 68
  end
  object Label4: TLabel
    Position.X = 8.000000000000000000
    Position.Y = 184.000000000000000000
    Size.Width = 185.000000000000000000
    Size.Height = 17.000000000000000000
    Size.PlatformDefault = False
    Text = 'Label4'
    TabOrder = 69
  end
  object Edit2: TEdit
    Touch.InteractiveGestures = [LongTap, DoubleTap]
    TabOrder = 79
    Text = 'diu'
    Position.X = 200.000000000000000000
    Position.Y = 168.000000000000000000
  end
  object Edit3: TEdit
    Touch.InteractiveGestures = [LongTap, DoubleTap]
    TabOrder = 80
    Text = 'diu'
    Position.X = 304.000000000000000000
    Position.Y = 168.000000000000000000
  end
  object Edit4: TEdit
    Touch.InteractiveGestures = [LongTap, DoubleTap]
    TabOrder = 81
    Text = 'Admin'
    Position.X = 408.000000000000000000
    Position.Y = 168.000000000000000000
  end
  object Edit5: TEdit
    Touch.InteractiveGestures = [LongTap, DoubleTap]
    TabOrder = 82
    Position.X = 512.000000000000000000
    Position.Y = 168.000000000000000000
  end
  object Edit6: TEdit
    Touch.InteractiveGestures = [LongTap, DoubleTap]
    TabOrder = 83
    Position.X = 616.000000000000000000
    Position.Y = 168.000000000000000000
  end
  object Label5: TLabel
    Position.X = 8.000000000000000000
    Position.Y = 208.000000000000000000
    Size.Width = 185.000000000000000000
    Size.Height = 17.000000000000000000
    Size.PlatformDefault = False
    Text = 'Label5'
    TabOrder = 102
  end
  object Button2: TButton
    Position.X = 64.000000000000000000
    Position.Y = 136.000000000000000000
    TabOrder = 110
    Text = 'Button2'
    OnClick = Button2Click
  end
  object IdUDPServer1: TIdUDPServer
    Active = True
    BroadcastEnabled = True
    Bindings = <>
    DefaultPort = 8488
    OnUDPRead = IdUDPServer1UDPRead
    Left = 8
  end
  object FDConnection1: TFDConnection
    Params.Strings = (
      
        'Database=' +Extractfilepath(paramstr(0))+
        '\bd\Users.mdb'
      'ReadOnly=False'
      'StringFormat=ANSI'
      'DriverID=MSAcc')
    Connected = True
    LoginPrompt = False
    Left = 112
  end
  object FDQuery1: TFDQuery
    Active = True
    Connection = FDConnection1
    SQL.Strings = (
      'Select*From Users')
    Left = 64
  end
  object BindSourceDB1: TBindSourceDB
    DataSet = FDQuery1
    ScopeMappings = <>
    Left = 160
  end
  object BindingsList1: TBindingsList
    Methods = <>
    OutputConverters = <>
    Left = 116
    Top = 93
    object LinkGridToDataSourceBindSourceDB1: TLinkGridToDataSource
      Category = 'Quick Bindings'
      DataSource = BindSourceDB1
      GridControl = StringGrid1
      Columns = <>
    end
    object LinkControlToField5: TLinkControlToField
      Category = 'Quick Bindings'
      DataSource = BindSourceDB1
      FieldName = 'Login'
      Control = Edit2
      Track = False
    end
    object LinkControlToField6: TLinkControlToField
      Category = 'Quick Bindings'
      DataSource = BindSourceDB1
      FieldName = 'Password'
      Control = Edit3
      Track = False
    end
    object LinkControlToField7: TLinkControlToField
      Category = 'Quick Bindings'
      DataSource = BindSourceDB1
      FieldName = 'User Group'
      Control = Edit4
      Track = False
    end
    object LinkControlToField8: TLinkControlToField
      Category = 'Quick Bindings'
      DataSource = BindSourceDB1
      FieldName = 'Othen'
      Control = Edit5
      Track = False
    end
  end
  object IdUDPClient1: TIdUDPClient
    Active = True
    Host = '192.168.1.255'
    Port = 8484
    Left = 736
    Top = 32
  end
  object IdFTPServer1: TIdFTPServer
    Bindings = <>
    CommandHandlers = <>
    ExceptionReply.Code = '500'
    ExceptionReply.Text.Strings = (
      'Unknown Internal Error')
    Greeting.Code = '220'
    Greeting.Text.Strings = (
      'Indy FTP Server ready.')
    MaxConnectionReply.Code = '300'
    MaxConnectionReply.Text.Strings = (
      'Too many connections. Try again later.')
    ReplyTexts = <>
    ReplyUnknownCommand.Code = '500'
    ReplyUnknownCommand.Text.Strings = (
      'Unknown Command')
    AnonymousAccounts.Strings = (
      'anonymous'
      'ftp'
      'guest')
    SITECommands = <>
    MLSDFacts = []
    ReplyUnknownSITCommand.Code = '500'
    ReplyUnknownSITCommand.Text.Strings = (
      'Invalid SITE command.')
    Left = 120
    Top = 40
  end
end

Так нельзя, это ж просто статические строки, а не код.

Скорее всего надо это свойство менять в обычном Паскалевском коде и после этого программно вызывать подключение к БД, предварительно отключив его на форме. (может быть просто Connected False, потом True)

… но скорее всего можно не париться и просто оставить относительный путь

будет работать если текущая директория совпадает с директорией программы.

1 лайк

Мне нужно, чтобы можно было перемещать программу и она не теряла пути к базе.

Так я и говорю, проще всего использовать обычный относительный путь “bd\Users.mdb”.

В некоторых случаях текущая директория может не совпадать с директорией программы (например, если открыть cmd и запустить программу из другой директории), но для обычного GUI приложения это обычно не особо актуально.
Если запускать .ехе из проводника, то будет эта директория.
Из Дельфи скорее всего тоже или указывается в настройках проекта. (в старых версиях Дельфи .ехе по умолчанию был прямо в папке с кодом, в новых в какой-нибудь подпапке типа Win32/Release, папку с БД соответственно надо туда скопировать)
В ярлыке тоже указывается.
image

Разве что во время работы программы она может поменяться например при вызове стандартного файлового диалога, но у него есть опция, чтоб он это не делал.

1 лайк

Точно так. И лучше программно присвоить абсолютный путь и не связываться с относительным во избежание ) Лучше считать, что понятие текущий каталог отсутствует напрочь, меньше ошибок будет )

Так и каким кодом это вызвано?

1 лайк

как только поменяла на вот это:
bd\Users.mdb
Так сразу и вылезло

Судя по “нет данных” там что-то некорректное получилось.

Ну или может просто папка с БД лежит не в папке программы + выведите куда-нибудь GetCurrentDir, чтобы узнать текущую директорию, вдруг там что-то не то.

image

Так а папка с БД лежит в ней?)

1 лайк

Если FireDAC то надо полностью указать путь http://docwiki.embarcadero.com/CodeExamples/Rio/en/FireDAC.MSAccess_Sample
Если через ADO то там не обязательно - главное что файл БД находилось тот папке где проект


Почему же не выбрать ADO если вы работайте Access -е

1 лайк

Тогда вам dbGo

1 лайк

а, точно.


Вообще там же не сложно программно путь указать.

Вторая ссылка в гугле: https://stackoverflow.com/a/30822412/964478

  1. Поставить Connection = False на форме (чтобы оно само не подключалось при запуске)

  2. Где угодно в коде (FormCreate, …):

    AppDirPath := ExtractFilePath(ParamStr(0));
    DatabaseFilePath := AppDirPath + 'db\Users.mdb';
    
    ...
    
    FDConnection1.Params.Values['Database'] := DatabaseFilePath;
    
    FDConnection1.Connected := True;
1 лайк
  1. и можно ещё так что программа читал это параметры на пример: из .ini файла , на будущее если программа будет на другом ПК и -или БД на другом месте, поменять параметры .ini файле и программа будет работать… интернете много примеров "Delphi работа с ini файлами " можно его допилить .
  2. Можно ещё создать программу для шифрование -дешифровка .ini файлов чтобы всех не мог почитать параметры из ini файлов… Надо ?! Пожалуйста: IdEncoderXXE1 и IdDecoderXXE1 много чего можно придумать и создать :wink: Shifr
1 лайк

это там где лежит программа потом еще не большой хвостик bd\Users.mdb

вот

procedure TForm2.FormCreate(Sender: TObject);
var
DatabaseFilePath, AppDirPath:String;
begin
AppDirPath := ExtractFilePath(ParamStr(0));
DatabaseFilePath := AppDirPath + 'db\Users.mdb';
FDConnection1.Params.Values['Database'] := DatabaseFilePath;
FDConnection1.Params.DriverID:='MSAcc';
FDConnection1.Params.Values['StringFormat']:='sfANSI';
FDConnection1.Params.Values['ReadOnly']:='false';
FDConnection1.LoginPrompt := False;

FDConnection1.Connected:=true;
form2.FDQuery1.Active:=true;
end;

что и получилось вот что
image

не вышло ado сейчас не нужно. Нужен FDConnection.