imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 12.05.2004, 17:32     # 1
steelik
Member
 
Аватар для steelik
 
Регистрация: 30.09.2002
Сообщения: 320

steelik Путь к славе только начался
Delphi (помогите разобраться)

Создаю событие OnMouseDown, создаю переменную Btn типа TButton . В ответ получаю Undeclared identifier: 'TButton'

Код:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
Btn : TButton;
begin

end;
В чём дело? Delphi 6.
steelik вне форума  
Старый 12.05.2004, 17:41     # 2
eXtreeme
Junior Member
 
Аватар для eXtreeme
 
Регистрация: 18.06.2003
Адрес: Moscow
Сообщения: 116

eXtreeme Известность не заставит себя ждатьeXtreeme Известность не заставит себя ждать
Должно работать... у меня работает..
TButton находиться в модуле StdCtrls. Он у тебя в uses задекларирован?
eXtreeme вне форума  
Старый 13.05.2004, 09:25     # 3
someone312002
Junior Member
 
Регистрация: 17.12.2002
Адрес: [EST], Tallinn
Сообщения: 120

someone312002 Путь к славе только начался
создал пустой проект, на свойствах формы попытался сделать анаологичное вышеописанному, ктрл + ф9 - ошибка...
потом, кинул на форму кнопку, снова откомпилировал - ошибки нет...
так что проверяй юзес...
__________________
"я не волшебник - я только учусь..." (c)
...а зовут меня Олег...
someone312002 вне форума  
Старый 13.05.2004, 17:32     # 4
steelik
Member
 
Аватар для steelik
 
Регистрация: 30.09.2002
Сообщения: 320

steelik Путь к славе только начался
Не могу разобраться с полиморфизмом классов. В книге по которой я учусь, описывается следующий пример.

Код:
TMyClass1 = class
procedure Show;
procedure Hide;
procedure MyProc(IsShow : Boolean); virtual;
end;

TMyClass2 = class(TMyClass1)
procedure MyProc(IsShow : Boolean); override;
end;

procedure TMyClass1.Show;
begin
MyProc(True);
end;

procedure TMyClass1.Hide;
begin
MyProc(False);
end;
Ошибка [Error] Project1.dpr(17): Unsatisfied forward or external declaration: 'TMyClass2.MyProc'
steelik вне форума  
Старый 15.05.2004, 16:00     # 5
steelik
Member
 
Аватар для steelik
 
Регистрация: 30.09.2002
Сообщения: 320

steelik Путь к славе только начался
Если мне необходимо скопировать в переменную типа string содержимое текстового файла. Как это сделать?
steelik вне форума  
Старый 15.05.2004, 23:38     # 6
f00rd
::VIP::
 
Аватар для f00rd
 
Регистрация: 11.06.2003
Адрес: Там...
Сообщения: 236

f00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форуме
steelik

Либо в TStringList загрузить (LoadFromFile) и после параметр Text взять, либо:

Код:
var
 f:System.Text;
 s,buf:string;
begin
 AssingFile(f,'file.txt');
 Reset(F);
 s:='';
 while not eof(f) do
   begin
   readln(f,buf);
   s:=s+buf;
  end;
end;
в s - текст....
f00rd вне форума  
Старый 16.05.2004, 03:20     # 7
/7y3uK
Advanced Member
 
Аватар для /7y3uK
 
Регистрация: 09.03.2004
Адрес: толстозадая Москва
Сообщения: 498

/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)
расшифровываю и упрощаю понимание :
var
f:TStringList; //Переменная типа объект TStringList.
begin
f:= TStringList.Create();
f.LoadFromFile(‘c:\filename.txt’);// Загружаю текстовый файл
f.Strings[0]; // Здесь находиться первая строчка файла
f.Strings[1]; // Здесь находиться вторая строчка файла
//и т.д.
f.Free; //не забываем чистьть за собой память
end;

Последний раз редактировалось /7y3uK; 16.05.2004 в 03:23.
/7y3uK вне форума  
Старый 16.05.2004, 16:52     # 8
f00rd
::VIP::
 
Аватар для f00rd
 
Регистрация: 11.06.2003
Адрес: Там...
Сообщения: 236

f00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форуме
/7y3uK

ну, практически... в f.Text весь текст находится, и не надо перебирать все строки...
f00rd вне форума  
Старый 16.05.2004, 20:11     # 9
/7y3uK
Advanced Member
 
Аватар для /7y3uK
 
Регистрация: 09.03.2004
Адрес: толстозадая Москва
Сообщения: 498

/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)
2 f00rd
Впринципе если в тексте нужно что-то искать, то по f.Text искать действительно быстрее. Но также возможна ситуация - допустим, каждая строка - фамилия. В случае TStringList достаточно читать по нескольку символов из начала каждой строки, а при нахождении сразу же по индексу вытаскивать всю строку.
/7y3uK вне форума  
Старый 17.05.2004, 15:58     # 10
f00rd
::VIP::
 
Аватар для f00rd
 
Регистрация: 11.06.2003
Адрес: Там...
Сообщения: 236

f00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форуме
/7y3uK
Заметь:
Цитата:
скопировать в переменную типа string содержимое текстового файла.
всё, фвать флудить
f00rd вне форума  
Старый 19.05.2004, 09:34     # 11
steelik
Member
 
Аватар для steelik
 
Регистрация: 30.09.2002
Сообщения: 320

steelik Путь к славе только начался
Пишу следующую, так сказать утилитку.
Загружаю текстовый файл, вот допустим его содержимое:

Код:
321948
953295
531295
359895
Необходимо, чтобы файл открывался, редактировался следующим образом:

Код:
example;321948;example;
example;953295;example;
example;531295;example;
example;359895;example;
Возможно, кто-то предложет более разумное решение:

Код:
var
st : TStringList;
..
st := TStringList.Create;
if OpenDialog1.Execute then
st.LoadFromFile(OpenDialog1.FileName);
astring := Format('%s%s%s',['General;',st.[i],';name;']);
ЗЫ: Как узнать, сколько строк находится в st ?
steelik вне форума  
Старый 19.05.2004, 11:05     # 12
someone312002
Junior Member
 
Регистрация: 17.12.2002
Адрес: [EST], Tallinn
Сообщения: 120

someone312002 Путь к славе только начался
count тебе в этом поможет...
__________________
"я не волшебник - я только учусь..." (c)
...а зовут меня Олег...
someone312002 вне форума  
Старый 19.05.2004, 18:58     # 13
steelik
Member
 
Аватар для steelik
 
Регистрация: 30.09.2002
Сообщения: 320

steelik Путь к славе только начался
Спасибо!
Как сделать в ToolBar-е кнопку не активной, до какого-то определённого действия.
steelik вне форума  
Старый 19.05.2004, 20:44     # 14
/7y3uK
Advanced Member
 
Аватар для /7y3uK
 
Регистрация: 09.03.2004
Адрес: толстозадая Москва
Сообщения: 498

/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)
Алё... в делфе почти у всех компонентов есть свойство Enable... например: Button1.Enable:=False - выключить, True - включить... Ты конкретнее рассказывай, зачем тебе кнопку выключать и когда включать, тебе народ расскажет как можно хитрее все сделать, раз ты дельфю только начал рюхать...
/7y3uK вне форума  
Старый 20.05.2004, 09:22     # 15
someone312002
Junior Member
 
Регистрация: 17.12.2002
Адрес: [EST], Tallinn
Сообщения: 120

someone312002 Путь к славе только начался
Располагай кнопки на тулбарах в соответствии с их назначением и активиру/деактивируй не по-кнопочно, а тулбар целиком. Так будет проще...
__________________
"я не волшебник - я только учусь..." (c)
...а зовут меня Олег...
someone312002 вне форума  
Старый 20.05.2004, 11:46     # 16
steelik
Member
 
Аватар для steelik
 
Регистрация: 30.09.2002
Сообщения: 320

steelik Путь к славе только начался
Всем респект!
Ещё вопрос! Как отличить цифру от текстового символа.
Например, в переменной st[0] у меня находится вот такая строчка: 610177 , как определить, что в этой сроке записано? Цифра али текст?
Задача состоит в том, чтобы проверять отрываемый файл, если в нём имеется текст, то он автоматом закрывается, т.к. для работы нам необходим файл с целочисленными с строками не более 10 символов в длину.
steelik вне форума  
Старый 20.05.2004, 15:23     # 17
f00rd
::VIP::
 
Аватар для f00rd
 
Регистрация: 11.06.2003
Адрес: Там...
Сообщения: 236

f00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форуме
steelik

Код:
var
 i:integer;
 s:string;
begin
try
 i:=StrToInt(s);
except
 exit;
 //s- не число
end;
или

Код:
var
 i:integer;
 s:string;
begin
 i:=StrToIntDef(s,-12345);
 if i=-12345 then exit;//s- не число
end;

Последний раз редактировалось f00rd; 20.05.2004 в 15:25.
f00rd вне форума  
Старый 20.05.2004, 17:04     # 18
steelik
Member
 
Аватар для steelik
 
Регистрация: 30.09.2002
Сообщения: 320

steelik Путь к славе только начался
Не понимаю, почему билды такие огромные получаются, пару диалоговых окон с примитивными процедурами, всего 600кб. Капался в опциях проекта, нашёл Build with runtime packages, после того, как поставил галку в этом чекбоксе, билд стал весить 70кб, однако проект библиотеки требует, которые весят по 700кб 8)))) Вот значит, почему все так не любят дельфи?
steelik вне форума  
Старый 20.05.2004, 18:40     # 19
steelik
Member
 
Аватар для steelik
 
Регистрация: 30.09.2002
Сообщения: 320

steelik Путь к славе только начался
Значит есть у меня переменная st типа TStringList, мне необходимо изменить каждую строчку следующим способом, формат такой [i]str1+st+str2, всё это можно было бы записать следующим образом, что я вообщем-то и сделал
Код:
for i := 0 to st.count-1
begin
 st[ i ] := Format('%s%s%s',[str1,st[ i ],str2])
end
, пользователю предоставляется возможность редактировать переменные str1, str2, то есть он может несколько раз переписать значения этих переменных.
Всё работает, но, когда я ввожу следующие значения, хочу например изменить значения str1, str2, то получается такого типа строчка:
str1 str1 st[i] str2 str2

То есть, к чему я это всё, функция Format не изменяет мне значения str1,str2, а просто их добавляет в строку - постоянно, может быть посоветуете что-нибудь? Нехотелось бы мне при каждом разе заполнять переменную st (у меня это происходит при открытии файла) исходной информацией.

Последний раз редактировалось steelik; 20.05.2004 в 18:47.
steelik вне форума  
Старый 20.05.2004, 20:00     # 20
/7y3uK
Advanced Member
 
Аватар для /7y3uK
 
Регистрация: 09.03.2004
Адрес: толстозадая Москва
Сообщения: 498

/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)/7y3uK Реально крут(а)
Во-первых я Делфи люблю и уважаю, т.к. я ей балуюсь уже лет 5, но склоняюсь все больше и больше к любым С, т.к. там есть много чего полезного, чем дельфя обделена... а весят они так немеряно, т.к. дельфя за тебя делает всю рутинную работу: ресурсы делает, процедуру окна создает и много чего другого разного, что впринципе можно было бы сделать ручками, но так получается быстрее... на голом асме пустое окно с кнопкой без кода у меня весит 3 КБ, но выглядит все мрачно и не красиво
По поводу форматирования: самое простое и не изящное - это сделать еще один StringList такого же сайза как первый, например st2, и делать в цикле вот так st2[i]:=str1+st[i]+str2;
/7y3uK вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 02:59.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.