Вопрос № 21528: Добрый день.
Возникла проблема со считыванием и изменением в ini файле.
Существует ini файл со следующими строка:
Начало=1000
Войти в здание=3000
Искать=1000
Закрыть окно=250
Выйти из здания=3000
Вопрос. Каким образом ...Вопрос № 21548: Извиняйте плиз.
Как из одного текстовово файла проверить на совпадение, строки во втором файле.
т.е строка из одного файла сравнивается со всеми строками в другом файле и записывает в мемо совпавщие строки или не совпавшие....Вопрос № 21554: Возвращаясь к вопросу № 21353
1.Каким образом можно узнать размеры видео изображения и изменить эти размеры?
2.Как узнать длину медиа-файла в секундах.
были получены несколько ответов экспертов, но все же:
1) Подскажите как можно зада...Вопрос № 21558: Здравствуйте уважаемые эксперты. Как сделать так чтоб при запуске программы не появлялась главная форма?
Cуть такова:
Запускает человек программу. Или она сама запускается из автозагрузки.
Сперва ничего не происходит. Но через пол часа вы...Вопрос № 21561: Здравствуйте, уважаемые эксперты!
Подскажите, пожалуйста, как выводить полупрозрачную надпись поверх всех окон....
Вопрос № 21.528
Добрый день.
Возникла проблема со считыванием и изменением в ini файле.
Существует ini файл со следующими строка:
Начало=1000
Войти в здание=3000
Искать=1000
Закрыть окно=250
Выйти из здания=3000
Вопрос. Каким образом считать эти строки в Edit1-Edit5
То-есть
В Edit1 должно считаться 1000 в Edit2 -3000, Edit3- 250. То-есть сами числа.
Опять же когда запуститься форма она считывает эти числа в Editы.
Мне еще нужно чтобы я мог изменить значение в Editaх и эти изменения отобразились в ini файле.
Если не трудно пример кодом пожалуйста.
С Уважением, Алексей
Отправлен: 30.05.2005, 18:14
Вопрос задала: Алексей (статус: Посетитель)
Всего ответов отправлено: 7
Ответ отправил: Bochvarov NikB (статус: 3-ий класс)
Отправлен: 30.05.2005, 18:30
Отвечает: Delphin
Здравствуйте, Комов!
Ну думаю ты знаешь как код вставлять? :-)
Смотри приложение.
Приложение:
--------- Ищу сервис пак для школы ^)))
Ответ отправил: Delphin (статус: 3-ий класс)
Отправлен: 30.05.2005, 19:42
Отвечает: Malish
Здравствуйте, Комов!
Для вывода и считки делай так:
var
Temp : String;
F: TextFile;
i : integer;
flag: boolean;
begin
flag:= false;
if OpenDialog1.Execute then { Display Open dialog box }
begin
readln(F,Temp);
for i:=0 to Length(Temp) do
begin
if (flag=true) then
Edit1.Text := Edit1.Text+ Temp[i];
if (Temp[i]='=') then
flag:=true;
end;
flag:=false;
end; // в Edit1 будет только 1000 можно сделать через функцию которая будет возвращать строку
Для записи :
var
//Temp : String;
F : TextFile;
i : integer;
begin
if SaveDialog1.Execute then { Display Open dialog box }
begin
AssignFile(F, SaveDialog1.FileName); { File selected in dialog box }
Rewrite(F);
Writeln(F,'Начало='+Edit1.Text);
//... //и так далее
end;
CloseFile(F);
end;
Вот так ;) !!!
Ответ отправил: Malish (статус: Студент)
Отправлен: 30.05.2005, 20:29
Отвечает: komatoz
Здравствуйте, Комов!
Это пример из моей программы:
GetDir(0,IniPath);
FileName:=IniPath+'lansetup.ini';
IniFile:=TIniFile.Create(FileName);
Host:=IniFile.ReadString('Net','Host',Host);
lan:=IniFile.ReadString('Net','lan',lan);
readonly:=IniFile.ReadString('Net','readonly',readonly);
DBPanel:=IniFile.ReadString('Net','DBPanel',DBPanel);
Days:=IniFile.ReadInteger('Net','Days',Days);
SK4:=IniFile.ReadInteger('Net','SK4',SK4);
SK2:=IniFile.ReadInteger('Net','SK2',SK2);
WorkDays:=IniFile.ReadString('Net','WorkDays',WorkDays);
здесь записываем
inifile.WriteString('NET','WorkDays',WorkDays);
inifile.WriteString('NET','Host',edit1.Text);
inifile.WriteString('NET','Days',edit3.Text);
days:=strtoint(edit3.Text);
inifile.WriteString('NET','SK4',edit4.Text);
SK4:=strtoint(edit4.Text);
inifile.WriteString('NET','SK2',edit5.Text);
SK2:=strtoint(edit5.Text);
inifile.WriteString('NET','WorkStationId',edit2.Text);
IniFile.Free;
Ответ отправил: komatoz (статус: 1-ый класс)
Отправлен: 31.05.2005, 02:23
Отвечает: Master135
Здравствуйте, Комов!
[File]
File=File
Lessons=Lessons
Pause=Pause
NewUser=NewUser
LoadUser=LoadUser
SaveResults=SaveResults
Continue=Continue
[Language]
Language=Language
English=English
Russian=Russian
[CustomLessons]
CustomLessons=CustomLessons
CreateLesson=CreateLesson
LoadUserLesson=LoadUserLesson
SaveLesson=SaveLesson
[Help]
Help=Help
About=About
Program Help=Program Help
[Difficulcy]
Difficulcy=Difficulcy
Easy=Easy
Medium=Medium
Difficult=Difficult
[Font]
Font1=Font1
Font2=Font2
Вот пример ини файла
А вот пример работі с ним повставляйте там где надо свои едиты, но обрати внимание на формат ини файла
ini:=TiniFile.Create(GetCurrentDir+'English.ini')
end;
MainMenu1.Items.Enabled:=true;
Form1.MAinMenu1.Items.Items[0].Caption:=ini.ReadString('File','File','');
Form1.MAinMenu1.Items.Items[0].Items[0].Caption:=ini.ReadString('File','Lessons','');
Form1.MAinMenu1.Items.Items[0].Items[1].Caption:=ini.ReadString('File','Pause','');
Form1.MAinMenu1.Items.Items[0].Items[2].Caption:=ini.ReadString('File','NewUser','');
Form1.MAinMenu1.Items.Items[0].Items[3].Caption:=ini.ReadString('File','LoadUser','');
Form1.MAinMenu1.Items.Items[0].Items[4].Caption:=ini.ReadString('File','SaveResults','');
Form1.MAinMenu1.Items.Items[0].Items[5].Caption:=ini.ReadString('File','Continue','');
Form1.MAinMenu1.Items.Items[1].Caption:=ini.ReadString('Language','Language','');
Form1.MAinMenu1.Items.Items[1].Items[0].Caption:=ini.ReadString('Language','English','');
Form1.MAinMenu1.Items.Items[1].Items[1].Caption:=ini.ReadString('Language','Russian','');
Form1.MAinMenu1.Items.Items[2].Caption:=ini.ReadString('CustomLessons','CustomLessons','');
Form1.MAinMenu1.Items.Items[2].Items[0].Caption:=ini.ReadString('CustomLessons','CreateLesson','');
Form1.MAinMenu1.Items.Items[2].Items[1].Caption:=ini.ReadString('CustomLessons','LoadUserLesson','');
Form1.MAinMenu1.Items.Items[2].Items[2].Caption:=ini.ReadString('CustomLessons','SaveLesson','');
Form1.MAinMenu1.Items.Items[3].Caption:=ini.ReadString('Help','Help','');
Form1.MAinMenu1.Items.Items[3].Items[0].Caption:=ini.ReadString('Help','About','');
Form1.MAinMenu1.Items.Items[3].Items[1].Caption:=ini.ReadString('Help','Program Help','');
Form1.MAinMenu1.Items.Items[4].Caption:=ini.ReadString('Difficulcy','Difficulcy','');
Form1.MAinMenu1.Items.Items[4].Items[0].Caption:=ini.ReadString('Difficulcy','Easy','');
Form1.MAinMenu1.Items.Items[4].Items[1].Caption:=ini.ReadString('Difficulcy','Medium','');
Form1.MAinMenu1.Items.Items[4].Items[2].Caption:=ini.ReadString('Difficulcy','Difficult','');
Form1.MAinMenu1.Items.Items[5].Caption:=ini.ReadString('Font','Font','');
Form1.MAinMenu1.Items.Items[5].Items[0].Caption:=ini.ReadString('Font','Font1','');
Form1.MAinMenu1.Items.Items[5].Items[1].Caption:=ini.ReadString('Font','Font2','');
ini.Destroy;
Ответ отправил: Master135 (статус: 3-ий класс)
Отправлен: 31.05.2005, 02:49 Оценка за ответ: 4
Отвечает: sir henry
Здравствуйте, Комов!
Для ini-файлов существует специальный класс - TIniFile. Работать с ним можно так:
var
MyIni: TIniFile;
s: syring; {Для сообщений}
Begin
{Открытие}
MyIni:=TIniFile.Create('Имя_файла.ini');
{Чтение строки из какой-либо секции}
Edit1.Text:=MyIni.ReadString('Название_секции', 'Название_строки', s);
{Записать в строку секции}
MyIni.WriteString('Название_секции', 'Название_строки', Edit1.Text);
{Освобождаем ресурс и закрываем файл}
MyIni.Free;
End;
Кроме ReadString в классе есть еще и методы для чтения других типов данных:
ReadBinaryStream
ReadBool
ReadDate
ReadDateTime
ReadFloat
ReadInteger
ReadTime
и, естественно, для записи их же. :)
Можно так-же считывать всю секцию за один раз:
ReadSection('Название_секции', StringList: TString);
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 31.05.2005, 05:37 Оценка за ответ: 5
Отвечает: Stamm
Здравствуйте, Комов!
Надо ini вида:
[настройки]
Начало=1000
Войти в здание=3000
Искать=1000
Закрыть окно=250
Выйти из здания=3000
var
IniFile:TIniFile;
begin
IniFile := TIniFile.Create('c:: est.INI');
Label1.edit:=IniFile.ReadString('настройки','Начало','') {И т.д}
А Записать
IniFile.WriteString('настройки','Начало',Label1.edit)
IniFile.Free;
Ответ отправил: Stamm (статус: 4-ый класс)
Отправлен: 31.05.2005, 19:12 Оценка за ответ: 5 Комментарий оценки: Расписано очень доступно
Вопрос № 21.548
Извиняйте плиз.
Как из одного текстовово файла проверить на совпадение, строки во втором файле.
т.е строка из одного файла сравнивается со всеми строками в другом файле и записывает в мемо совпавщие строки или не совпавшие.
Отправлен: 31.05.2005, 00:05
Вопрос задала: kda (статус: Посетитель)
Всего ответов отправлено: 5
Отвечает: sir henry
Здравствуйте, kda!
Непонятно что нужно - записывать в мемо совпавшие строки или не совпавшие? Вы уж, батенька, изъясняйтесь непротиворечиво. :)
Поиск строки в файле можно сделать так:
Открыть оба файла традиционным способом, т.е. через AssignFile().
Завести цикл чтения строк из первого файла в строковую переменную.
Внутри завести второй цикл по чтению строк из втрого файла и каждую строку из него сравнивать со строкой из переменной первого файла.
В случае совпадения(несовпадения - тут уж Вы сами определитесь) строка записывается в мемо (Memo.Lines.Add(Строка)).
Пример в приложении.
Приложение:
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 31.05.2005, 06:38
Отвечает: uzertt
procedure TForm1.Button5Click(Sender: TObject);
var
SL1, SL2: TStringList;
i: Integer;
begin
SL1 := TStringList.Create;
SL2 := TStringList.Create;
try
Sl1.LoadFromFile('1.txt');
Sl2.LoadFromFile('2.txt');
for i:=0 to Sl1.Count-1 do
if Pos(SL1[i], Sl2.Text)>0 then begin
// Строка присутствует
end else begin
// Она же отсутствует
end;
finally
Sl1.Free;
Sl2.Free;
end;
end;
Ответ отправил: uzertt (статус: 1-ый класс)
Отправлен: 31.05.2005, 08:44
Отвечает: Jadd
Здравствуйте, kda!
Прежде, чем задавать вопрос, неплохо было бы поискать в базе - а вдруг уже отвечали на такой-же. Неделю назад тут уже был такой вопрос. Ищите ответ в базе вопросов/ответов. Ничего более сообщить не хочу.
--------- Hakuna matata
Ответ отправил: Jadd (статус: 6-ой класс)
Отправлен: 31.05.2005, 10:22
Отвечает: nimoid
Здравствуйте, kda!
В архив рассылки сначала надо заглядывать. Такой вопрос совсем недавно был.
Ответ отправил: nimoid (статус: 2-ой класс)
Отправлен: 31.05.2005, 12:10
Отвечает: Pushkin
Здравствуйте, kda!
Сравнивать строки можно также, как и любые другие переменные, т.е. if str1=str2. Читать строки из файла можно оператороми ReadLn(F1,str1); ReadLn(F2,str2);
if str1=str2 then Memo1.Lines.Add(str1);
Делаем все в цикл.
F1 и F2 - файловые переменные типа SYSTEM.Text;
Или любым другим способом (их {способов} количество бесконечно).
Ответ отправил: Pushkin (статус: 3-ий класс)
Отправлен: 31.05.2005, 18:29
Вопрос № 21.554
Возвращаясь к вопросу № 21353
1.Каким образом можно узнать размеры видео изображения и изменить эти размеры?
2.Как узнать длину медиа-файла в секундах.
были получены несколько ответов экспертов, но все же:
1) Подскажите как можно задать определёный размер видео картинки.
Когда я пытаюсь задать координата ключевых точек вот так:
MediaPlayer1.Open;
MediaPlayer1.DisplayRect.Left:=10;
MediaPlayer1.DisplayRect.Top:=10;
MediaPlayer1.DisplayRect.Right:=70;
MediaPlayer1.DisplayRect.Bottom:=50;
MediaPlayer1.Play;
у меня появляется сообщение об ошибке типа: [Error].pas(28): Left side be assigned to
Может я что-то делаю неправильно,
но водебы интежеревой переменной присваиваю значение такогоже типа.
2) Программно (Label5.Caption:=IntToStr(MediaPlayer1.Length);)
я узнаю длинну медиа-файла(стандартный файл Delphi: BorlandDelphi6DemosCoolStufspeedis.avi)
и заношу её в лейбл. И я получаю 460. Но через Winamp длинна равна 30.
Даже если 460 это милисекунды то все равно они не равны 3000.
3) Можно ли узнать что проигрывание медиа-файла закончено? Как? Или это узнается специальным таймером?
Можно ли это сделать при помощи операции Nofity? Как она работает?
С уважением, Романов Леонид.
Отправлен: 31.05.2005, 11:52
Вопрос задал1: Ямкина Елена Владимировна (статус: Посетитель)
Всего ответов отправлено: 2
Отвечает: X
Здравствуйте, Ямкина Елена Владимировна!
1)Сначало надо установить сам Dispaly: MediaPlayer1.Display:=Panel1, затем можно изменять размеры Panel1.
2)MediaPlayer1.Length - если проигрываеться звук, то это милисекунды, а вот если видео - неясно что, может кол-во кадров.
3)If MediaPlayer1.Position=MediaPlayer1.Length then//проигрование закончено
Ответ отправил: X (статус: 5-ый класс)
Отправлен: 31.05.2005, 14:43
Отвечает: Malish
Здравствуйте, Ямкина Елена Владимировна!
2.
MediaPlayer1.TimeFormat := tfMilliseconds;
ShowMessage('Number of milliseconds = ' + IntToStr(MediaPlayer1.Length));
Ответ отправил: Malish (статус: Студент)
Отправлен: 31.05.2005, 19:30
Вопрос № 21.558
Здравствуйте уважаемые эксперты. Как сделать так чтоб при запуске программы не появлялась главная форма?
Cуть такова:
Запускает человек программу. Или она сама запускается из автозагрузки.
Сперва ничего не происходит. Но через пол часа вылезает окошко с сообщением
типа "Купите себе селедку и морочте ей голову". При нажатии на OK исчезает, но через пол часа снова вылезает
с другим сообщением (тут уже Visible меняет не кнопка, а сработавший
таймер). Таких сообщений там полтора десятка, они выбираются случайным
образом и подставляются в качестве значения Caption объекта Label на этой
форме. Снимается резидент только через три пальца, причем видно его только
на вкладке "Процессы" - в "Приложениях" его видно только когда это окно
вылезает. Я все это уже сделал, вся фигня только в том, что при запуске
этой программы окно вылезает сразу. А надо чтобы оно сразу же скрытым было,
иначе запустивший эту прогу юзер сразу все поймет.
Отправлен: 31.05.2005, 13:59
Вопрос задала: Саша Ковальски (статус: Посетитель)
Всего ответов отправлено: 9
Отвечает: uzertt
Здравствуйте, Саша Ковальски!
в *.dpr перед созданием главной формы пишем
Application.ShowMainForm := False;
и все...
Ответ отправил: uzertt (статус: 1-ый класс)
Отправлен: 31.05.2005, 14:15
Отвечает: Ballon
Здравствуйте, Саша Ковальски!
Самый простой способ на FormCreate изменить положение формы. Например:
Form1.Left := Screen.Width + 100;
А на таймер возвращаешь на место. Например;
Form1.Position := poScreenCenter;
Но тогда тебе придется убирать её с панели задач.
Ответ отправил: Ballon (статус: 2-ой класс)
Отправлен: 31.05.2005, 15:03
Отвечает: X
Здравствуйте, Саша Ковальски!
Ещё пара вариантов как спрятать форму:
1)Form1.Hide (ну или просто Hide) в FormPaint.
2)ShowWindow(Handle,SW_HIDE) там же.
Чтоб появилась можно использовать Show или ShowWindow(Handle,SW_SHOWNORMAL).
Ответ отправил: X (статус: 5-ый класс)
Отправлен: 31.05.2005, 16:53
Отвечает: Malish
Здравствуйте, Саша Ковальски!
К советам предоставленным выше могу предложить сделать форму невидимой ;)
procedure TMainForm.FormCreate(Sender: TObject);
begin
Application.OnMinimize:=AppMinimize;
Application.OnRestore:=AppMinimize;
Application.Minimize; AppMinimize(@Self);
end;
procedure TMainForm.AppMinimize(Sender: TObject);
begin
ShowWindow(Application.Handle, SW_HIDE);
end;
Ответ отправил: Malish (статус: Студент)
Отправлен: 31.05.2005, 19:15
Отвечает: Denisss
Здравствуйте, Саша Ковальски!
Заходим меню File->New->Other... там выбираем Console Application на закладке New.
В новом проекте находим {$APPTYPE CONSOLE} и удаляем его (чтобы консольное окошко не появлялось) далее см. код.
Приложение:
Ответ отправил: Denisss (статус: 2-ой класс)
Отправлен: 31.05.2005, 19:21
Отвечает: Stamm
Здравствуйте, Саша Ковальски!
ДЛя начала на загрузку формы поставь:
application.ShowMainForm:=false;
Создай массив из N кол-ва сообщений
Const n=10;
VAr a:array[1..n] of string;
Заполни его
a[1]:='';
a[2]:='';
и т.д.
Затем кинь на форму таймер и поставь там интервал 1800000
Label1.caption:=a[Random(n)];
Ответ отправил: Stamm (статус: 4-ый класс)
Отправлен: 31.05.2005, 19:22
Отвечает: sir henry
Здравствуйте, Саша Ковальски!
Ну дак присвойте этому окну в дизайн-тайме значение Visible:=False и оно у Вас будет запускаться невидимым. Или я чего-то не понял в Вашем вопросе?
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 01.06.2005, 04:01
Отвечает: And1
Здравствуйте, Саша Ковальски!
Программы-приколы писать нехорошо! Ну ладно, но только в целях обучения :))
1. Для скрытия формы в событие OnActivate кидаешь следующий код:
ShowWindow (Handle, SW_HIDE);
ShowWindow (Application.Handle, SW_HIDE);
2. Для отображения формы на твоё событие вот так:
ShowWindow (Handle, SW_Normal);
ShowWindow (Application.Handle, SW_Normal);
Ответ отправил: And1 (статус: 2-ой класс)
Отправлен: 01.06.2005, 15:31
Отвечает: Ujin Antikvar
Здравствуйте, Саша Ковальски!
На Delphi я знаю только один способ уничтожения глав форм и выглядит это так:
Form1.Create(Application); //Уничтожает глав функцию
Попробуй еще просто сделать глав форму не видимой установив в Object-Inspector'e в раздле Visible значение False.
Удачи
С Ув. Ujin Antikvar
--------- Не зацикливайся на достигнутом, а двигайся в перед
Ответ отправил: Ujin Antikvar (статус: 1-ый класс)
Отправлен: 01.06.2005, 23:02
Вопрос № 21.561
Здравствуйте, уважаемые эксперты!
Подскажите, пожалуйста, как выводить полупрозрачную надпись поверх всех окон.
Отправлен: 31.05.2005, 14:21
Вопрос задала: Lauer (статус: Посетитель)
Всего ответов отправлено: 7
Отвечает: Jadd
Здравствуйте, Lauer!
ДЫк делаем изображение ввиде надписи. Затем юзаем компоненту, которая позволяет делать окна любой формы. И юзаем свойство AlphaBlend формы. Затем ставим свойство TopMost и показываем. Все.
--------- Hakuna matata
Ответ отправил: Jadd (статус: 6-ой класс)
Отправлен: 31.05.2005, 15:04
Отвечает: streetcat
Здравствуйте, Lauer!
так получиться только в виндах выше 2000 включительно
создай форму с надписью и установи значения ee свойствам:
FormStyle := fsStayOnTop;
BorderStyle := bsNone;
AlphaBlend := True;
AlphaBlendValue := 128; // 50% прозрачности
ну а теперь размести на форме Label с нужным текстом и задай фоновый цвет формы
если фон не нужен, то задай его, например, черным и установи свойства формы в:
TransparentColor := true;
TransparentColorValue := clBlack; // Такой же как фон
--------- WinERROR: Keyboard not detected. Press Enter to continue
Ответ отправил: streetcat (статус: 5-ый класс)
Отправлен: 31.05.2005, 15:46
Отвечает: Master89
Здравствуйте, Lauer!
Можно сделать отдельную форму, поставить у неё Border=bsNone, затем "положить" Label с нужным текстом. Ну а саму форму и сделать полупрозрачной (AlphaBlendValue = 128). Другой вариант - рисовать прямо на экране. Функция GetDC(0) возвратит дескриптор канвы экрана (Canvas) и потом на ней можно привычно рисовать (через TextOut). Однако здесь есть подводный камень: другие окна будут затирать нарисованный текст.
Ответ отправил: Master89 (статус: 5-ый класс)
Отправлен: 31.05.2005, 17:50
Отвечает: Pushkin
Здравствуйте, Lauer!
Необходимо использовать свойства AlphaBlend и AlphaBlendValue
Ответ отправил: Pushkin (статус: 3-ий класс)
Отправлен: 31.05.2005, 18:31
Отвечает: Stamm
Здравствуйте, Lauer!
Form1.AlphaBlendValue := 200;
Form1.AlphaBlend := True;
Form1.FormStyle:=fsStayOnTop;
Form1.BorderStyle:=bsNone;
Кидай на форму Label на весь размер
И всё
Ответ отправил: Stamm (статус: 4-ый класс)
Отправлен: 31.05.2005, 19:27
Отвечает: sir henry
Здравствуйте, Lauer!
Что такое "полупрозрачная надпись"? Это компонент Label со свойством Transparent:=True или модальное окно, сквозь которое все просвечивает?
Уточните пожалуйста.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 01.06.2005, 04:03
Отвечает: VBA
Здравствуйте, Lauer!
Можно сделать прозрачную форму (свойство AlphaBlend=True и AlphaBlendValue - "значение прозрачности окна") и установить свойство FormStyle равным fsStayOnTop.
На этой форме разместить лабел с любым текстом.
Эта фича работает только в Win 2000/XP
--------- Неправ вечно юзер, ибо прав всегда Админ!
Ответ отправил: VBA (статус: 4-ый класс)
Отправлен: 01.06.2005, 12:45