Вопрос № 36326: Посмотрите пожалуйста код в приложении. Где я допустил ошибку? Я пытаюсь навесить общий обработчик на все Edit-ы. При нажатии F8 должен быть заменен текст на 'OK'. Я с указателями в Дельфи не очень дружу (все больше на CBuilder-е приходится писать). ...Вопрос № 36334: Здравствуйте!
Есть ли такая книга где описано все все все о Delphi?
Спасибо!...Вопрос № 36361: Здравствуйте господа программисты. Проблема такая: мне надо программно скопировать часть текста из RichEdit в DBRichEdit сохраняя форматирование, я использую такой метод
RichEdit1.CopyToClipboard;
DBRichEdit1.PasteFromClipboard;//выделение ...Вопрос № 36363: Кто сможет разжевать мне всё о
FindFile
DeleteFile
и т.д
Я непонимаю как с ними обращаца !!!
Вот всё понимаю а етого не понимаю
для чего нужен
Допустим если я хочу найти и удалить файл
для чего мне прописывать
<b...Вопрос № 36374: Доброе время суток Эксперты. У меня возник вопрос связанный с буфером обмена. Подскажите команды пожалуйста которые помещали данные в буфер обмена, и команды которые извлекали эту информацию.
Заранее спасибо....Вопрос № 36390: Здравствуйте, эксперты. Вот пишу программку - Чат по книге «Делфи глазами хакера». Кидаю на форму компоненты IdUDPClient и IdUDPServer. Скажите пожалуйста, где у меня ошибка. По книге все точно также!. Делфи 7. Единственное я решил, что у меня Делфи ...
Вопрос № 36.326
Посмотрите пожалуйста код в приложении. Где я допустил ошибку? Я пытаюсь навесить общий обработчик на все Edit-ы. При нажатии F8 должен быть заменен текст на 'OK'. Я с указателями в Дельфи не очень дружу (все больше на CBuilder-е приходится писать). Заранее спасибо.
Приложение:
Отправлен: 27.02.2006, 16:11
Вопрос задал: Rusland (статус: Специалист)
Всего ответов: 6 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Jadd
Здравствуйте, Rusland!
Sender нужно заменить на Self (аналог this в с++) без @.
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Отправлен: 27.02.2006, 16:16
Отвечает: Bochvarov NikB
Здравствуйте, Rusland!
надо изменит (replace)
RE:=TEdit.Create(@Sender)
RE.Text:='OK';
RE.Free;
на
if Sender is tEdit then begin
tEdit(Sender).Text := 'OK';
end;
Ответ отправил: Bochvarov NikB (статус: 6-ой класс)
Отправлен: 27.02.2006, 16:35 Оценка за ответ: 5 Комментарий оценки: Спасибо. То что нужно.
Отвечает: sir henry
Здравствуйте, Rusland!
Если речь идет только о проверке нажатия F8, то в строке:
if ((Key=VK_F8)and(Shift<>[ssShift])) then
часть "and(Shift<>[ssShift]))" явно лишняя. Правильно будет так:
if Key=VK_F8 then
В процедуре AutoReplace Вы создаете новый компонент типа TEdit, в качестве владельца которого указываете другой TEdit. Это зачем? Совершенно непонятно что она должна делать. И вообще непонятно, для чего нужна эта процедура. И заданного вопрпоса видно, что у Вас на форме несколько Edit'ов и для проверки нажатия F8 в каждом Edit'е Вы хотите использовать одну и туже процедуру. Для этого просто укажите в каждом событии этих компонентов название уже существующей процедуры и все.
По поводу Вашей недружбы с указателями. Объект (Sender у Вас) используется в том виде, в каком он и представлен. Брать его адрес ошибка.
Учитывая то, что смысл того, что должна делать эта процедура совершенно непонятен, то невозможно что-либо посоветовать по этому поводу.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 27.02.2006, 17:46
Отвечает: Злоумышленник
Здравствуйте, Rusland!
Надо так:
// Процедура замены текста у вызывающего Edit-а
procedure AutoReplace(Sender: TObject);
begin
TEdit(Sender).Text:='OK';
end;
Нет сейчас Delphi под рукой, сам не проверял, поэтому если не работает, пиши в форум
--------- Почему нет встроенного языка 1С на мордовском? Было бы клёво!
Ответ отправил: Злоумышленник (статус: 3-ий класс)
Отправлен: 27.02.2006, 19:16
Отвечает: Leshiy2006
Здравствуйте, Rusland!Замените @Sender на Self,а вообще зачем нужна доп. процедура?
Ответ отправил: Leshiy2006 (статус: 3-ий класс)
Отправлен: 27.02.2006, 22:55
Отвечает: Ataman N. N.
Здравствуйте, Rusland!
Напишите так
procedure AutoReplace(RE: TEdit);
begin
RE.Text:='OK';
end;
А процедуру обработки нажатия клавиши измените так:
procedure TForm1.Edit11KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if ((Key=VK_F8)and(Shift<>[ssShift])) then
begin
AutoReplace(Sender as TEdit);//передаете, что Sender как TEdit
{или вместо верхней строки просто напишите
(Sender as TEdit).Text:='OK';}
end;
end;
Ответ отправил: Ataman N. N. (статус: 8-ой класс)
Отправлен: 28.02.2006, 16:48 Оценка за ответ: 5 Комментарий оценки: Хороший вариант. Спасибо.
Вопрос № 36.334
Здравствуйте!
Есть ли такая книга где описано все все все о Delphi?
Спасибо!
Отправлен: 27.02.2006, 17:49
Вопрос задал: BatanRus (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Jadd
Здравствуйте, BatanRus!
Я с первой версии юзал дельфи на протяжении многих лет и не видел ни одной книги, которая охватывала бы все все все. Была книга с претензией на это, но это было для версии 3. Последние версии не отслеживал, но все так же сомневаюсь, что таковые есть.
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Отправлен: 27.02.2006, 17:55
Отвечает: Архангельский Андрей Германович
Здравствуйте, BatanRus!
Такой книги не существует, Потому что Delphi это не только оболочка для разработки, но и громадное количество библиотек компонентов, разработанные различными группами программистов.
ЕСть хорошие книги:
Стив Тейксейра, Ксавье Пачеко "Руководство разработчика" (по разным версиям 8, 6, 5)
Марко Кэнту "Delphi 7(6,4) для профессионалов"
Эти два книги охватывают 90% задач, которые встречаются при обычной разработке.
Отвечает: Tamashev Denis M
Здравствуйте, BatanRus!
Обезательно скачай Delphi глазами Хакера !
Да всего ты не найдёшь но многое узнаешь из книг !!!
Ответ отправил: Tamashev Denis M (статус: 1-ый класс)
Отправлен: 27.02.2006, 20:11
Вопрос № 36.361
Здравствуйте господа программисты. Проблема такая: мне надо программно скопировать часть текста из RichEdit в DBRichEdit сохраняя форматирование, я использую такой метод
RichEdit1.CopyToClipboard;
DBRichEdit1.PasteFromClipboard;//выделение устанавливается заранее
текст копируется но без форматирования.
Заранее благодарен.
Отправлен: 27.02.2006, 23:03
Вопрос задал: Leshiy2006 (статус: 3-ий класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Архангельский Андрей Германович
Здравствуйте, Leshiy2006!
А поле в которое ты копируешь поддерживает форматирование?
А при копировании в ClipBoard ты указываешь в каком формате нужно записывать данные?
Попробуй вручную проделать эти операции - попробуй вставить из Clipboard в Word и Блокнот. Посмотри что будет и многое будет ясно.
Ответ отправил: Архангельский Андрей Германович (статус: Практикант)
Отправлен: 27.02.2006, 23:20 Оценка за ответ: 4 Комментарий оценки: DBRichEdit форматирование поддерживает
Вопрос № 36.363
Кто сможет разжевать мне всё о
FindFile
DeleteFile
и т.д
Я непонимаю как с ними обращаца !!!
Вот всё понимаю а етого не понимаю
для чего нужен
Допустим если я хочу найти и удалить файл
для чего мне прописывать
p: array[0..max_path] of char;
s: string;
sr: tsearchrec;
Массивы ???
s---->строка она для чего нужна ???
И наверное сомое главное ето sr: tsearchrec; ---------> он для чего нужен он чтото хранит ???
Отвечает: sir henry
Здравствуйте, Tamashev Denis M!
FindFirst()+ Findnext() - ищут файлы по заданной маске и с заданными аттрибутами.
Если файл найден, то заполняется структура типа TSearchRecord данными о файле. Далее поиск по шаблону можно проводить с помощью FindNext().
DeleteFile() удаляет файл по его имени.
Var
sr: TSearchRec;
Begin
If FindFirst('*.exe', faAnyFile, sr) Then
DeleteFile(sr.Name);
While FindNext(sr)=0 Then
DeleteFile(sr.Name);
End;
В этом примере в текущем каталоге ищутся все файлы с расширением EXE и если находятся, то удаляются.
*******************
Уточните, что значит "разжевать все..." и что такое "и т.д."?
Помните, что правильно заданный вопрос - 50% ответа.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 28.02.2006, 07:36 Оценка за ответ: 5 Комментарий оценки: Молодец !!! Уважаю 8) !!!
Отвечает: Diman_A
Здравствуйте, Tamashev Denis M!
Вот тебе кусок, позволяющий искать файлы.
private
FFileName: string;
procedure FindFiles(APath: string);
procedure Tform1.FindFiles(APath: string);
var
FSearchRec,
DSearchRec: TSearchRec;
FindResult: integer;
item:tlistitem;
function IsDirNotation(ADirName: string): Boolean;
begin
Result := (ADirName = '.') or (ADirName = '..');
end;
begin
FindResult := FindFirst(APath + FFileName, faAnyFile + faHidden +
faSysFile + faReadOnly, FSearchRec);
try
while FindResult = 0 do
begin
showmessage (LowerCase(APath + FSearchRec.Name));
{вместо предыдущей строки вставляешь то, что хочешь делать с найденным файлом}
FindResult := FindNext(FSearchRec);
end;
FindResult := FindFirst(APath + '*.*', faDirectory, DSearchRec);
{если тебе нужен поиск во вложенных папках, то убери скобки в след. блоке}
{while FindResult = 0 do
begin
if ((DSearchRec.Attr and faDirectory) = faDirectory) and not
IsDirNotation(DSearchRec.Name) then
FindFiles(APath + DSearchRec.Name); // Recursion here
FindResult := FindNext(DSearchRec);
end;}
finally
FindClose(FSearchRec);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
FFileName := ('*.*');
findfiles ('c:');
end;
end.
А вот про Tsearchrec:
Unit
SysUtils
type
TSearchRec = record
Time: Integer;
Size: Integer;
Attr: Integer;
Name: TFileName;
ExcludeAttr: Integer;
FindHandle: THandle;
FindData: TWin32FindData;
end;
Т.е. Tsearchrec - это поисковая переменная, в которую заносятся данные о найденном файле.
Удалить файл: deletefile(filename)
Ответ отправил: Diman_A (статус: 6-ой класс)
Отправлен: 28.02.2006, 16:33 Оценка за ответ: 4 Комментарий оценки: Ну я просил не кусок етих кусков у меня у самого завались мне нужно обьяснение !!!
Вопрос № 36.374
Доброе время суток Эксперты. У меня возник вопрос связанный с буфером обмена. Подскажите команды пожалуйста которые помещали данные в буфер обмена, и команды которые извлекали эту информацию.
Заранее спасибо.
uses Clipbrd; ... var C: TClipboard; ... C:=TClipboard.Create; C.Open; Form1.Caption:=C.AsText; //Прочитать данные C.AsText:=`hello!`;
//Поместить данные C.Close; C.Free;
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 28.02.2006, 07:45
Отвечает: Leshiy2006
Здравствуйте, Шишлянникова Анисия Николаевна!
1-й вариант:
uses ...Clipbrd;
var
Form1: TForm1;
cl:TClipboard;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
cl:=Tclipboard.Create;
cl.AsText:=Edit1.Text;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
cl.Free;
end;
2-й вариант:
если есть текстовое поле (Tedit и т.д.)
выделяете ручками или программно и пишете
Edit1.CopyToClipboard;
Удачи!
Ответ отправил: Leshiy2006 (статус: 3-ий класс)
Отправлен: 01.03.2006, 23:32
Вопрос № 36.390
Здравствуйте, эксперты. Вот пишу программку - Чат по книге «Делфи глазами хакера». Кидаю на форму компоненты IdUDPClient и IdUDPServer. Скажите пожалуйста, где у меня ошибка. По книге все точно также!. Делфи 7. Единственное я решил, что у меня Делфи неправильный . Ошибку выдает в строчке
procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);.
Пишет: [Error] Unit1.pas(15): Undeclared identifier: 'TIdSocketHandle'. Это после того когда объявляеш переменную (любую) в блоке (см.пример) в данном случае - i:integer.
Приложение:
Отправлен: 28.02.2006, 12:12
Вопрос задал: Int20h (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: sir henry
Здравствуйте, Int20h!
Глюк наверное. :)
Добавте в строке USES модуль IdSocketHandle, где собственно этот тип (TIdSocketHandle) и объявлен и будет Вам счастье. :)
Ответ отправил: sir henry (статус: Академик)
Отправлен: 28.02.2006, 12:34
Отвечает: Архангельский Андрей Германович
Здравствуйте, Int20h!
Добавь в Uses ScktComp, Этот идентификатор объявлен там
Отвечает: Злоумышленник
Здравствуйте, Int20h!
Надо в uses дописать idSocketHandle. Еле нашёл, за это Delphi и не люблю.
--------- Почему нет встроенного языка 1С на мордовском? Было бы клёво!
Ответ отправил: Злоумышленник (статус: 3-ий класс)
Отправлен: 28.02.2006, 23:40