if OpenPictureDialog1.Execute then
begin
fname:=openpicturedialog1.filename;
// Находим номер символа начала подстроки my
my := '\ny\';
P := Pos(my, fname);
P := P + 4;
col := length(fname) - P + 1;
// Вставляем новую строку в путь для базы данных
pyt_no_pr := Copy(fname, P, col);
Как заменить абсолютный путь относительным Delphi
виде картинок в базу данных. Но при этом указывается полный путь d:/my/task. Если открывать открывать эту
программу на другом компе, то папка my может быть перемещена на диск e. И при попытке достать картинку
по старым путям в базе данных уже не получится. Открывается картинка с помощью элемента OpenPictureDialog1.
Не подскажете как решить эту проблему.
Спасибо заранее.
Код:
procedure TFormMain.BitBtn7Click(Sender: TObject);
var Fname:string;
begin
if OpenPictureDialog1.Execute then
begin
fname:=openpicturedialog1.filename;
with dm.q do // Запрос из базы данных
begin
Active := false; // неактивен
SQL.Clear; // очистить запрос
SQL.Add('INSERT INTO IM_TABLE(IMG) VALUES(');
SQL.Add(QuotedStr(Fname) + ')');
ExecSQL;
end;
with dm.SimpleDataSet2 do
begin
Active:=false;
DataSet.Active := false;
DataSet.Active := true;
Active := true;
Locate('IMG', Fname, [loCaseInsensitive]);
end;
end;
end;
var Fname:string;
begin
if OpenPictureDialog1.Execute then
begin
fname:=openpicturedialog1.filename;
with dm.q do // Запрос из базы данных
begin
Active := false; // неактивен
SQL.Clear; // очистить запрос
SQL.Add('INSERT INTO IM_TABLE(IMG) VALUES(');
SQL.Add(QuotedStr(Fname) + ')');
ExecSQL;
end;
with dm.SimpleDataSet2 do
begin
Active:=false;
DataSet.Active := false;
DataSet.Active := true;
Active := true;
Locate('IMG', Fname, [loCaseInsensitive]);
end;
end;
end;
Application.Exename даст тебе путь к твоему екзешнику. От него и плясать
Цитата: CorsaiR
Application.Exename даст тебе путь к твоему екзешнику. От него и плясать
К какому exeшнику?
http://docwiki.embarcadero.com/Libraries/en/Vcl.Forms.TApplication.ExeName
Цитата:
Contains the file name of the application's executable file including path information.
Use ExeName to obtain the name of the executable file for the application. ExeName is the fully-qualified name, including the path to the application's executable.
Use ExeName to obtain the name of the executable file for the application. ExeName is the fully-qualified name, including the path to the application's executable.
Твоего екзешника, с полным путем, откуда его запустили.
Нужна функция которая разбивала бы путь на подпути, может есть такая?
В этом случае руками придется. Папку с картинками лучше обозвать так, чтобы pos' ом в строке легче найти было,и все, что перед отбрасывать.
Всем спасибо - сделал так: