![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Есть лог-файл, где происходит запись после запуска exe-файла новым пользователем - в конец каждой строки прописывается имя компьютера с которого была запущена программа:
Код: #1 comp1 comp2 comp3... #2 comp1 comp2 comp3 ... #3 comp1 comp2 comp3 ... Как сделать, чтобы в конец каждой строки прописывалось новое имя, при этом происходила проверка на "новизну" имени? |
#2
|
|||
|
|||
![]() Ну, просканируйте перед записью строку на предмет вхождения в нее подстроки с именем «текущего» компьютера (с помощью функции Pos). Или в чем проблема?
|
#3
|
|||
|
|||
![]() Цитата:
Логичнее сделать так: проверка по первой строке, если есть то выходим, если нет - добавляем в конец каждой строки. Т.е., первая строка является трафаретом для других строк, где все идентично первой. Вот только как реализовать на деле? |
#4
|
|||
|
|||
![]() Код:
const COMPNAME = 'comp5'; // например FILEPATH = 'comps.txt'; // например var comps: TStringList; i: Integer; Str: string; begin comps := TStringList.Create; try if not FileExists(FILEPATH) then Exit; comps.LoadFromFile(FILEPATH); Str := Copy(comps.Text, 1, Pos(#13#10, comps.Text) + 2); if (Pos(' ' + COMPNAME + ' ', str) = 0) and (Pos(' ' + COMPNAME + #13, str) = 0) then begin for i := 0 to comps.Count - 1 do comps.Strings[i] := comps.Strings[i] + ' ' + COMPNAME; comps.SaveToFile(FILEPATH); end; finally comps.Free; end; end; Последний раз редактировалось Nyctos Kasignete, 22.07.2009 в 13:52. |
#5
|
|||
|
|||
![]() А как можно заменить:
Код:
const COMPNAME = 'comp5'; |
#6
|
|||
|
|||
![]() Код:
const FILEPATH = 'comps.txt'; // например var comps: TStringList; i: Integer; Str: string; username: PChar; unsize: DWORD; begin comps := TStringList.Create; GetMem(username, 255); try if not GetUserName(username, unsize) then Exit; if not FileExists(FILEPATH) then Exit; comps.LoadFromFile(FILEPATH); Str := Copy(comps.Text, 1, Pos(#13#10, comps.Text) + 2); if (Pos(' ' + StrPas(username) + ' ', str) = 0) and (Pos(' ' + StrPas(username) + #13, str) = 0) then begin for i := 0 to comps.Count - 1 do comps.Strings[i] := comps.Strings[i] + ' ' + StrPas(username); comps.SaveToFile(FILEPATH); end; finally comps.Free; FreeMem(username, 255); end; end; Последний раз редактировалось Nyctos Kasignete, 23.07.2009 в 10:27. |