Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi 2

Модерирует : ShIvADeSt

ShIvADeSt (22-03-2007 02:18): http://forum.ru-board.com/topic.cgi?forum=33&topic=8142  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

   

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Продолжение темы http://forum.ru-board.com/topic.cgi?forum=33&topic=3647&start=2020#lt
Внимание, все большие куски кода (более 5 строк) оформляем в тег [more] дабы уменьшить размер поста.

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:52 20-04-2006 | Исправлено: ShIvADeSt, 02:02 30-06-2006
Yogi Bear

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не удержусь от флуда. С Новым Годом всех!! Счастья и успехов!!

Всего записей: 54 | Зарегистр. 08-09-2006 | Отправлено: 03:52 30-12-2006
Jokerjar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пытаюсь отослать из приложения в приложение (при помощи сообщения wm_copydata) следущую структуру:
 

Код:
type
Rec = record
s1,s2: string;
i: integer;
end;

 
Отправляю вот так:
 

Код:
procedure contomain;
var
win: hwnd;
copyDataStruct:TCopyDataStruct;
wp,lp: integer;
r: Rec;
begin
win:=findwindow('TForm1',nil);
r.s1 := 'Hello';
r.s2 := 'world';
r.i := 87;
CopyDataStruct.lpData:=@r;
CopyDataStruct.cbData:=sizeof(r);
WP:=0;
LP:=Integer(@CopyDataStruct);
SendMessage(win,WM_CopyData,WP,LP);
end;

 
А принимаю, соответственно, вот так:
 

Код:
procedure TForm1.CopyData(var Msg: TWMCopyData);
begin
CopyDataStructure := Msg.CopyDataStruct^;
len:=  CopyDataStructure.cbData;
r := rec(Pointer(CopyDataStructure.lpData)^);
ShowMessage(r.s1);
inherited;
end;

 
Но вот не хочет это все работать... Сообщение отпрвляется и получается нормально, но срабатывает исключение "out of memory" в процедуре принятия сообщения. Где я мог накасячить?

Всего записей: 591 | Зарегистр. 22-03-2006 | Отправлено: 08:48 30-12-2006 | Исправлено: Jokerjar, 08:49 30-12-2006
RomanTim

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
S0ldier
А нормально описать что нужно не бывает - телепаты довольно большая редкость
 
megadave
В варезнике есть тема по платным компонентам
 
Добавлено:
Jokerjar
string - это примерно то же, что и динамический массив, в переменной лежит указатель на память строки и размер. Когда ты передаешь этот указатель в другое приложение он становится бессмысленным.
Попробуй в рекорде описать строки в виде статических массивов из чаров

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 10:23 30-12-2006
S0ldier



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RomanTim

Цитата:
А нормально описать что нужно не бывает - телепаты довольно большая редкость

Да вроде вполне доступно описано.
В Edit вводим $00006F, при нажатии на Button вызываем Seek($00006F, soFromBeginning). Как преобразовать?

Всего записей: 3230 | Зарегистр. 18-01-2005 | Отправлено: 13:47 30-12-2006
SERGE_BLIZNUK

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Button вызываем Seek($00006F, soFromBeginning).  

и что - приведённый вами код работает?!?! Точнее хотя компилируется?..
вроде в seek первым параметром же идёт файловая переменная?
(procedure Seek(var F; N: Longint);)
у меня попытка скомпилировать ваш пример даёт "Incompatible types"
 
Добавлено чуть позже...
 
дело в том, что ваш seek - это метод у TFileStream:
  function Seek(Offset: Longint; Origin: Word): Longint;
тогда так, как вам уже сказали раньше:

Код:
 
var
   //  fs : TFileStream;
  MyOffset : Integer;
begin
  MyOffset := StrToInt( Edit1.Text);
  fs.Seek( MyOffset, soFromBeginning);
 

и ещё, не мешало бы добавить проверку на ошибочный ввод в Edit1.Text - хотя бы через Try .. Except
 
 

Всего записей: 2014 | Зарегистр. 12-09-2002 | Отправлено: 14:47 30-12-2006 | Исправлено: SERGE_BLIZNUK, 15:45 30-12-2006
S0ldier



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SERGE_BLIZNUK
Всё верно, я сказал просто для примера. У меня и создаётся FileStream...
 
Добавлено:
Кажется нашёл ошибку.

Всего записей: 3230 | Зарегистр. 18-01-2005 | Отправлено: 17:03 30-12-2006
JonyBes

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как посчитать колличество открытых(а не созданных) страниц.  
пробую делать так:  
W:=GetActivOleObject('Word.Application );  
for i=0 to w.documents.count -1  
 
Данная хрень возвращает только единицу. Как сделать правильнее?

Всего записей: 371 | Зарегистр. 29-11-2004 | Отправлено: 11:07 31-12-2006
andead



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
кто-нибудь пробовал доделывать Audio Tools Library 2.3 под теги версии 2.4?

Всего записей: 1821 | Зарегистр. 22-09-2005 | Отправлено: 11:17 31-12-2006
andead



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
оки, посоветуйте тогда компаненты для чтения тегов ID3v2.4 под BDS2006

Всего записей: 1821 | Зарегистр. 22-09-2005 | Отправлено: 00:14 02-01-2007
JonyBes

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всех с Новым Годом!
В проекте множество форм. Формы загружаются и выгружаются из памяти по необходимости.  Не пойму как сделать переменную на главной форме, чтобы видна была из других форм. Делаю так :
 
 
uses
  Windows, Messages, SysUtils...
type
  TForm1 = class(TForm)
  ....
var
  Form1: TForm1;
  patch, nomer:string;//- вот мои переменные.
Что-то из других форм не видны.
Как правильнее?
 
Добавлено:
Всех с Новым Годом!
 
 Хочу поставить прогресбар на время копирования файлов. Вот код :
 
word.ActiveDocument.SaveAs('\\Super\D\Base_UFSKN\Documents\'+patch+'\'+files);
 
Копирование идет по сети с клиента, т.ч. при большом документе процесс довольно долгий. Чтобы на клиентской части в это время не было паники - нужен индикатор процесса.

Всего записей: 371 | Зарегистр. 29-11-2004 | Отправлено: 09:34 02-01-2007
SERGE_BLIZNUK

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
JonyBes
Цитата:
как сделать переменную на главной форме, чтобы видна была из других форм
просто в тех формах, где нужно иметь доступ к вашей переменной нужно добавить в uzes имя главной формы (лучше в секции implementation)

Код:
implementation
  uses unit1;

 
а ещё лучше добавить модуль c общими переменными (например, unit MyVars) - вынести туда переменные и процедуры/функции для работы с ними - и этот модуль добавить в uses всех форм.
 

Цитата:
поставить прогресбар на время копирования файлов

Возможно использование обратных вызывов. Но если с этим не заморачиваться - то проще сделать так (менять курсор)

Код:
 
var
   cur: TCursor;
begin
  Cur := Screen.Cursor;
  try
    Screen.Cursor := crHourGlass;
    word.ActiveDocument.SaveAs('\\Super\D\Base_UFSKN\Documents\'+patch+'\'+files);  
    ...
  finally
    Screen.Cursor := Cur;
  end;
 


Всего записей: 2014 | Зарегистр. 12-09-2002 | Отправлено: 11:33 02-01-2007
RostY



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
JonyBes
в других формах в uses напиши модуль формы, где описаны переменные

Всего записей: 387 | Зарегистр. 11-01-2006 | Отправлено: 12:53 02-01-2007
Zver1992

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Имеется файл 2.txt в котором находится обычная html страничка. В ней возможно имеется текст 10woodЛЮБЫЕЧИСЛА. Нужно вырезать именно эти любые числа, идущие за 10wood. После любых чисел идет символ &, до 10wood символ =. Как это сделать?

Всего записей: 599 | Зарегистр. 30-10-2004 | Отправлено: 21:39 02-01-2007
RomanTim

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Zver1992
sl := TStringList.Create;
sl.LoadFromFile('2.txt');
s := sl.Text;
sl.Free;
Delete(s, 1, Pos('=10wood', s)+6);
Result := Copy(s, 1, Pos('&', s)-1);

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 00:29 03-01-2007
SERGE_BLIZNUK

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zver1992
Цитата:
10woodЛЮБЫЕЧИСЛА
вариантов много. Основные - либо использовать регулярные выражения (библиотек много, смотри, например, бесплатную библиотеку http://regexpstudio.com/Downloads/regexpr_RU.rar), либо тупо читать файл в TFileStream, перебирать там по символу и искать там 10wood, потом выбирать пока только цифры...
(пример можно и накидать).
Если у Вас в файле только одно выражение, тем более так чётко заданное, я бы выбрал второй вариант.
 
Добавлено:
блин, пока писал, RomanTim уже рабочий вариант кинул ;-)))

Всего записей: 2014 | Зарегистр. 12-09-2002 | Отправлено: 00:52 03-01-2007
xokc

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zver1992
RegExp рулит. Универсально и модно.

Всего записей: 477 | Зарегистр. 22-09-2002 | Отправлено: 18:35 03-01-2007
RostY



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xokc
Для вышеприведенного случая использование универсального и модного RegExp -- стрельба из пушки по воробьям

Всего записей: 387 | Зарегистр. 11-01-2006 | Отправлено: 11:57 04-01-2007
oan42



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zver1992, RostY
Регулярные выражения для данного случая - это не подходящий инструмент.
Нужно использовать синтаксический анализатор HTML.
Воробьев  стрелять не хорошо, тем более своими ручками

Всего записей: 488 | Зарегистр. 03-08-2004 | Отправлено: 15:45 04-01-2007
afiget



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
oan42
Чем же поможет
Цитата:
синтаксический анализатор HTML
в выборке подстроки, не являющейся ни тэгом, ни даже полным содержимым (а только частичным) блока?
 
+1 за вариант RomanTim
 
RegExp будет излишеством при заданных условиях.
 

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 17:41 04-01-2007
oan42



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
afiget
Вы когда-нибудь пользовались HTML-парсером?
Если да, то каким?
 
Спрашиваю не просто так, - ищу навороченный HTML-парсер.
 
К сожалению DIHTMLParser с полными исходниками пока не попадался,
из Open Source что-то не встретил ничего стоящего.
 
Хотелось бы на уровне Turbopower XMLPartner Professional.
 
Kustarnik когда-то поднимал тему лучшего HTML-парсера, но она не нашла отклика.

Всего записей: 488 | Зарегистр. 03-08-2004 | Отправлено: 00:15 05-01-2007
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi 2
ShIvADeSt (22-03-2007 02:18): http://forum.ru-board.com/topic.cgi?forum=33&topic=8142


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru