![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по потокам [D7, WinXP]
Русланка © (2005-09-01 15:48:00)Если у меня в главном модуле объявлены глобальные переменные, то сможет ли запущенный отдельный поток писать и читать данные из этих переменных?
Игорь Шевченко (2005-09-02 16:05:00) [61]Alexander Panov © (02.09.05 16:04) [27]
> А чему оно должно соответствовать?
Про соответствие ты начал, вообще-то.
Я еще раз выскажу мысль, что не стоит в форуме для начинающих выкладывать код, потенциально ведущий к глюкам.
Alexander Panov (2005-09-02 16:05:00) [62]Если вы имеете ввиду, что я употребил слово "соответствующий", так все верно. Имя файла будет соответствовать тому, которое должно получиться в результате работы функции. И не более того.
Alexander Panov (2005-09-02 16:04:00) [63]Игорь Шевченко © (02.09.05 16:03) [25]
Вопрос только, чему оно соответствует.
А чему оно должно соответствовать?
begin...end (2005-09-02 16:04:00) [64]> Alexander Panov © (02.09.05 16:01) [23]
У меня вопрос, аналогичный [25].
Игорь Шевченко (2005-09-02 16:03:00) [65]Alexander Panov © (02.09.05 16:01) [23]
> "Projecini" - неправильное имя?
Вопрос только, чему оно соответствует.
Alexander Panov (2005-09-02 16:02:00) [66]Игорь Шевченко © (02.09.05 16:01) [22]
Попробуй.
А зачем пробовать? и так видно, что получаемое имя будет легальным.
Елинственный недочет - не учитывается общая длина имени файла, которая не может быть меньше 4.
Alexander Panov (2005-09-02 16:01:00) [67]begin...end © (02.09.05 15:58) [21]
Чему соответствующее? Исполняемый файл: "Project.1", ini-файл: "Projecini". Что чему соответствует?
"Projecini" - неправильное имя?
Игорь Шевченко (2005-09-02 16:01:00) [68]Alexander Panov © (02.09.05 15:57) [20]
Попробуй.
begin...end (2005-09-02 15:58:00) [69]> Alexander Panov © (02.09.05 15:52) [18]
> Значит, имя ini-файла будет соответствующее.
Чему соответствующее? Исполняемый файл: "Project.1", ini-файл: "Projecini". Что чему соответствует?
Alexander Panov (2005-09-02 15:57:00) [70]Игорь Шевченко © (02.09.05 15:54) [19]
Попробуй сделать файлу расширение из одного символа. Или из нуля.
и?
Игорь Шевченко (2005-09-02 15:54:00) [71]Alexander Panov © (02.09.05 15:52) [18]
Я считаю, что в конференции для начинающих не стоит приводить фрагменты кода, являющиеся источником потенциальных глюков.
Попробуй сделать файлу расширение из одного символа. Или из нуля.
Alexander Panov (2005-09-02 15:52:00) [72]begin...end © (02.09.05 15:45) [17]
Любое.
Значит, имя ini-файла будет соответствующее.
Но вот Это было изначально неправильно.- в упор не вижу
begin...end (2005-09-02 15:45:00) [73]> Alexander Panov © (02.09.05 15:39) [16]
Любое.
Alexander Panov (2005-09-02 15:39:00) [74]Игорь Шевченко © (02.09.05 15:38) [15]
Поясняю. Размер расширения исполняемого файла не обязательно равен 3-м символам.
А какое может быть еще расширение у написанного мнойисполняемого файла?
Игорь Шевченко (2005-09-02 15:38:00) [75]Alexander Panov © (02.09.05 14:36) [14]
Поясняю. Размер расширения исполняемого файла не обязательно равен 3-м символам.
Alexander Panov (2005-09-02 14:36:00) [76]Игорь Шевченко © (02.09.05 14:04) [13]
Это было изначально неправильно.
Поясни?
Игорь Шевченко (2005-09-02 14:04:00) [77]Alexander Panov © (02.09.05 13:37) [12]
Это было изначально неправильно. А ChangeFileExt работает правильно.
Alexander Panov (2005-09-02 13:37:00) [78]Игорь Шевченко © (02.09.05 13:27) [11]
Это было изначально в другом модуле - только на WinAPI без подключения Sysutils.
Игорь Шевченко (2005-09-02 13:27:00) [79]
> function GetIniName: String;
> begin
> Result := ParamStr(0);
> SetLength(Result,Length(Result)-3);
> Result := Result +'ini';
> end;
Result := ChangeFileExit (ParamStr(0), '.ini');
Alexander Panov (2005-09-02 11:47:00) [80]vidiv © (02.09.05 11:23) [8]
А ктонибудь может привести пример синхронизации на вин-апи?
unit uIni;
interface
uses
windows,IniFiles;
procedure EnterIniCS;
procedure LeaveIniCS;
function GetIniName: String;
function GetParm(const aSec,aParm: String): String;
procedure WriteParm(const aSec,aParm,aValue: String);
procedure DeleteSection(const aSec: String);
procedure DeleteKey(const aSec,aParm: String);
var
IniCS: RTL_CRITICAL_SECTION;
implementation
procedure EnterIniCS;
begin
EnterCriticalSection(IniCS);
end;
procedure LeaveIniCS;
begin
LeaveCriticalSection(IniCS);
end;
function GetIniName: String;
begin
Result := ParamStr(0);
SetLength(Result,Length(Result)-3);
Result := Result +'ini';
end;
function GetParm(const aSec,aParm: String): String;
var
ini: TIniFIle;
begin
Result := '';
ini := TIniFile.Create(GetIniName);
try
EnterIniCS;
Result := ini.ReadString(aSec,aParm,'');
LeaveIniCS;
finally
ini.Free;
end;
end;
procedure WriteParm(const aSec,aParm,aValue: String);
var
ini: TIniFIle;
begin
ini := TIniFile.Create(GetIniName);
try
EnterIniCS;
ini.WriteString(aSec,aParm,aValue);
LeaveIniCS;
finally
ini.Free;
end;
end;
procedure DeleteKey(const aSec,aParm: String);
var
ini: TIniFIle;
begin
ini := TIniFile.Create(GetIniName);
try
EnterIniCS;
ini.DeleteKey(aSec,aParm);
LeaveIniCS;
finally
ini.Free;
end;
end;
procedure DeleteSection(const aSec: String);
var
ini: TIniFIle;
begin
ini := TIniFile.Create(GetIniName);
try
EnterIniCS;
ini.EraseSection(aSec);
LeaveIniCS;
finally
ini.Free;
end;
end;
initialization
InitializeCriticalSection(iniCS);
finalization
DeleteCriticalSection(iniCS);
end.