Вариант 1.
String Path = ExtractFilePath(ParamStr(0));
Вариант 2.
AnsiString Path;
Path = ExtractFilePath(Application->ExeName);
Общие вопросы программирования
Здесь размещаются общие вопросы программирования в С++Builder (язык, методы и приемы разработки, ООП и т.п.)
E2015 Ambiguity between 'function1' and 'function2'. Подскажите что ему надо?
Ответ:
Конфликт между пространствами имен. Надо четко указать - из какого пространства имен ты вызываешь функцию.
Автор ответа: kot_
Как при запуске программы узнать путь к exe файлу?
Ответ:
Код:
Автор ответа: 1 kot_, 2 enola
Какой компонент, наподобии OpenDialog, нужно использовать, чтобы просто выбрать путь к папке, а не к файлу?
Пример 1:
Код:
#include <FileCtrl.hpp>
...
AnsiString Directory;
SelectDirectory("Select directory",WideString(""),Directory);
...
AnsiString Directory;
SelectDirectory("Select directory",WideString(""),Directory);
Пример 2:
Код:
char Path[255];
BROWSEINFO lpbi;
ITEMIDLIST *Id;
lpbi.hwndOwner = Handle;
lpbi.pidlRoot = NULL;
lpbi.pszDisplayName = Path;
lpbi.lpszTitle = "Каталог-источник";
lpbi.ulFlags = NULL; //BIF_BROWSEFORCOMPUTER;
lpbi.lpfn = NULL;
lpbi.lParam = NULL;
lpbi.iImage = NULL;
Id = SHBrowseForFolder(&lpbi);
if(Id)
{
SHGetPathFromIDList(Id, Path);
SourcePathEd->Text = Path;
}
BROWSEINFO lpbi;
ITEMIDLIST *Id;
lpbi.hwndOwner = Handle;
lpbi.pidlRoot = NULL;
lpbi.pszDisplayName = Path;
lpbi.lpszTitle = "Каталог-источник";
lpbi.ulFlags = NULL; //BIF_BROWSEFORCOMPUTER;
lpbi.lpfn = NULL;
lpbi.lParam = NULL;
lpbi.iImage = NULL;
Id = SHBrowseForFolder(&lpbi);
if(Id)
{
SHGetPathFromIDList(Id, Path);
SourcePathEd->Text = Path;
}
Авторы ответа: 1 kot_, 2 Relax
Подскажите плиз как в Билдере разбить строку на массив символов по определенному разделителю?
Пример 1:
Код:
TStringList *slTabs = new TStringList;
slTabs->Delimiter = '\t';
slTabs->Clear();
slTabs->DelimitedText="Мама\tбила\tМашу";
AnsiString x1 = slTabs->Strings[0]; // Мама
AnsiString x2 = slTabs->Strings[1]; // била
AnsiString x3 = slTabs->Strings[2]; // Машу
delete slTabs;
slTabs->Delimiter = '\t';
slTabs->Clear();
slTabs->DelimitedText="Мама\tбила\tМашу";
AnsiString x1 = slTabs->Strings[0]; // Мама
AnsiString x2 = slTabs->Strings[1]; // била
AnsiString x3 = slTabs->Strings[2]; // Машу
delete slTabs;
Пример 2:
Код:
#include <stdio.h>
#include <string.h>
int MySplit(char *src, char **dst, char splitchar);
int main(void)
{
char x[] = "Run\tLive\tTo\tFly\t,\tFly\tTo\tLive\tAces\tHigh\t!";
char *strings[60];
int i;
int n;
for(i = 0; i < 60; i++)
strings = new char[100];
n = MySplit(x, (char**)strings, '\t');
for(i = 0; i < n; i++)
puts(strings);
for(i = 0; i < 60; i++)
delete[] strings;
return 0;
}
int MySplit(char *src, char **dst, char splitchar)
{
int i;
int l;
int j;
int k;
for(k = 0, i = 0, j = 0, l = strlen(src); i < l; i++)
{
if(src == splitchar)
{
dst[j++][k] = '\0';
k = 0;
}
else
dst[j][k++] = src;
}
if(k)
dst[j][k] = '\0';
return ++j;
}
#include <string.h>
int MySplit(char *src, char **dst, char splitchar);
int main(void)
{
char x[] = "Run\tLive\tTo\tFly\t,\tFly\tTo\tLive\tAces\tHigh\t!";
char *strings[60];
int i;
int n;
for(i = 0; i < 60; i++)
strings = new char[100];
n = MySplit(x, (char**)strings, '\t');
for(i = 0; i < n; i++)
puts(strings);
for(i = 0; i < 60; i++)
delete[] strings;
return 0;
}
int MySplit(char *src, char **dst, char splitchar)
{
int i;
int l;
int j;
int k;
for(k = 0, i = 0, j = 0, l = strlen(src); i < l; i++)
{
if(src == splitchar)
{
dst[j++][k] = '\0';
k = 0;
}
else
dst[j][k++] = src;
}
if(k)
dst[j][k] = '\0';
return ++j;
}
Автор ответа: Plisteron