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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 101 102 103 104 105 106 107 108 109 110 111

Открыть новую тему     Написать ответ в эту тему

data man



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обсуждаем новые возможности и баги
Просьба писать только про Delphi 2009 и выше - по остальным версиям есть соответствующая тема.
Вопросы вареза здесь не обсуждаются !!!
См. также:
Известные важные баги Delphi 2010:

Описание________________________________________________ Исправлено Решение/Альтернатива_____________________
  1. Внимание !  Деинсталляция D2010 нарушает работу D2007 и D2009 !  
При деинсталляции удаляются CC3280MT.DLL и CC3290MT.DLL из Windows\System32,   необходимые для работы D2007 и D2009 соответственно.
Сделайте резервные копии
  2. Code Formatter не работает, если не инсталлирован пакет моделирования.   В нем также присутствует множество багов. Используйте с осторожностью.   1.   JEDI CodeFormat 2.44 SVN Snapshot (~750Kb)   Требуются JCL и JVCL  
2.GExperts with Formatter
  3. Не работает F1 в Object Inspector Update 2   IDEFixPack 2.9 от Andreas Hausladen
(dev. snapshots)
  4. Если IDE начинает падать с сообщением "Out of resources", возможно, что поврежден .res файл проекта. Удалить его, запустить IDE, открыть проект - новый .res файл будет создан автоматически.
  5. В редакторе не работает Class Completion, если в декларируемом классе есть поля с шаблонами. Перед декларированием поля добавить public или private и т.д.
  6. TTrayIcon.ShowBalloonHint() не работает на ОС ниже Vista [QC 77561] Update 2 * Установить Update 2   * ИЛИ почитать о причинах и решении проблемы на форуме embarcadero и в QC   * ИЛИ воспользоваться альтернативой, например Cooltray 4.4.0
  ...      


Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 14:28 26-08-2009 | Исправлено: data man, 18:27 06-08-2010
alekc2008



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

Цитата:
PrWork1

нет функция updateM не внутри класса  
а если у меня параметров const country_341_400: RateCount;... и т.д. по убыванию 40 штук
мне нужно создавать переменную r 40 раз?

Всего записей: 236 | Зарегистр. 14-05-2007 | Отправлено: 22:50 29-07-2011
PrWork1

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

Всего записей: 582 | Зарегистр. 15-12-2005 | Отправлено: 22:58 29-07-2011
alekc2008



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

Цитата:
PrWork1

ну да мне действительно нужно 40 экземпляров
спасибо за наводку у меня похоже все становится на свои места...

Всего записей: 236 | Зарегистр. 14-05-2007 | Отправлено: 23:06 29-07-2011
PrWork1

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alekc2008
Да незачто... Подумайте, возможно класс как-то по другому построить можно.

Всего записей: 582 | Зарегистр. 15-12-2005 | Отправлено: 23:08 29-07-2011
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alekc2008
Я надеюсь вы свои 40 экземпляров массивом передаете?

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 23:37 29-07-2011
alekc2008



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

Цитата:
Frodo_Torbins

не совсем массив поля из базы данных

Всего записей: 236 | Зарегистр. 14-05-2007 | Отправлено: 09:36 30-07-2011
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alekc2008
Просто приходилось видеть функции с десятками параметров одного типа - ужасное зрелище.

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 09:57 30-07-2011
PrWork1

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alekc2008
В базе эти значения хранятся.
Если эти значения нужны для преобразования данных в базе, то возможно их вообще не нужно тащить в дельфи, можно написать sql-запросом или хранимую процедуру, делающую то что нужно.
 
Если в базе эти значения только храняться, чтобы при запуске программы загрузить их в память, то можно сделать например, массив объектов, чтобы с ним было легче работать.
ПРо это и вопрос.

Всего записей: 582 | Зарегистр. 15-12-2005 | Отправлено: 10:04 30-07-2011 | Исправлено: PrWork1, 10:05 30-07-2011
vunder



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Объявил структуру и тип

Код:
 
  tSingleComplex = record
    case Integer of
      1I, Q: Single);
      2Re, Im: Single);
      3X, Y: Single);
  end;
 
  pSingleComplexArray = ^tSingleComplexArray;
  tSingleComplexArray = array[0..MaxInt div SizeOf(tSingleComplex)-1] of tSingleComplex;
 

 
Есть метод класса  

Код:
 
procedure tWriteSigFileThread.Normalize(const Data; DataSize: LongWord);
var Count: LongWord;
    I: LongWord;
begin
  if fSigHeader.QueryType = stComplFull then begin
    Count := DataSize div SizeOf(tSingleComplex);
    for I := 0 to Pred(Count) do
     with tSingleComplexArray(Data)[I] do begin
      I := IfThen(Abs(I) < fSigHeader.NormThresh, I/fSigHeader.NormThresh, 1.0);
      Q := IfThen(Abs(Q) < fSigHeader.NormThresh, Q/fSigHeader.NormThresh, 1.0);
     end
  end
end;
 

Delphi XE ругается на строках присваивания полей  I и Q: E2064 Left size cannot be assigned to. В 2006 все нормально компилируется. В чем дело?

Всего записей: 46 | Зарегистр. 28-10-2004 | Отправлено: 18:21 01-08-2011
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vunder
Наверное дело в том, что у вас для счетчика цикла используется тот же символ что и для одного из полей записи. Уберите with - он здесь совершенно не нужен.

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 21:05 01-08-2011
Cryogen2003



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
vunder
У тебя написано в ошибке, что нельзя левой части что либо присвоить. Наверное просто из-за того, что ты пытаешься присвоить с преобразованием типов значению, которое объявлено как константа (const Data). Может быть стоит пересмотреть это понятие константа или же просто разрешить в компиляторе присваивание константам.


----------
Холодильники мы

Всего записей: 745 | Зарегистр. 08-12-2004 | Отправлено: 08:22 02-08-2011 | Исправлено: Cryogen2003, 08:25 02-08-2011
vunder



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cryogen2003
Заменил const на var, все получилось, спасибо.
 
Frodo_Torbins
with там как раз нужен, без него конструкция будет очень громоздкой и нечитаемой:

Код:
 
       tSingleComplexArray(Data)[I].I := IfThen(Abs(tSingleComplexArray(Data)[I].I) < fSigHeader.NormThresh, tSingleComplexArray(Data)[I].I/fSigHeader.NormThresh, 1.0);  
       tSingleComplexArray(Data)[I].Q := IfThen(Abs(tSingleComplexArray(Data)[I].Q) < fSigHeader.NormThresh, tSingleComplexArray(Data)[I].Q/fSigHeader.NormThresh, 1.0);  
      end  
 

 

Всего записей: 46 | Зарегистр. 28-10-2004 | Отправлено: 09:50 02-08-2011 | Исправлено: vunder, 09:57 02-08-2011
Cryogen2003



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
vunder
const - это переменная только на чтение  
var - и на чтение, и на запись (как внутри процедуры, так и во вне)
out - только на запись
если не писать не один из этих параметров, то будет еще интереснее - работает и на чтение, и на запись, но на выход из процедуры(функции) ничего возвращаться не будет (аналог var, но без возвращения во вне)

----------
Холодильники мы

Всего записей: 745 | Зарегистр. 08-12-2004 | Отправлено: 09:57 02-08-2011
vunder



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

Всего записей: 46 | Зарегистр. 28-10-2004 | Отправлено: 10:00 02-08-2011
yse

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[подскажите чайнику]
да все может так но все таки показывает на строку ошибка Reset(f); // открыть для чтения
 
 (вопрос , может такое быть что файл не существует или файл не найден для чтения по этому не может открыть файл и выдает такую ошибку ,ошибка Reset(f); // открыть для чтения.
сам огрызок  из мутного исходника
function GetSpecialPath(CSIDL: word): string;
var s: string;
begin
SetLength(s, MAX_PATH);
if not SHGetSpecialFolderPath(0, PChar(s), CSIDL, true)
then s := '';
result := PChar(s);
end;
 
function read(s:string):string;
var
  f: TextFile; // файл
  fName: String[80]; // имя файла
  buf: string[80]; // буфер для чтения из файла
begin
  fName := s; AssignFile(f, fName);
 
  Reset(f); // открыть для чтения
 
 
  // чтение из файла
  while not EOF(f) do
  begin
    readln(f, buf); // прочитать строку из файла
   result:=(buf); // добавить строку в поле Memo1
  end;
 
  CloseFile(f); // закрыть файл
 
может сюда then s := ''; нужно добавить существующий файл который должен быть открытым для чтения или я ошибаюсь

Всего записей: 36 | Зарегистр. 29-07-2011 | Отправлено: 11:38 03-08-2011 | Исправлено: yse, 12:28 03-08-2011
murkovich



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yse
Разумеется, если GetSpecialPath не найдет путь, то Reset на несуществующий файл выдаст ошибку. Это уже от логики программы зависит, как из такой ситуации выходить. Из фрагмента совем не ясно, с каким параметром вызывается read();

Всего записей: 1551 | Зарегистр. 26-05-2005 | Отправлено: 12:11 03-08-2011
yse

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
да конечно чтоб не копипастить
ссылка на исходник: http://webfile.ru/5471358
 
расширение измените  на .pas

Всего записей: 36 | Зарегистр. 29-07-2011 | Отправлено: 12:25 03-08-2011 | Исправлено: yse, 12:26 03-08-2011
JAPWork

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yse
Ошибка какая? Не "The specified file was not found"?
Отладчик что показывает на момент AssignFile? Какое там имя файла? Такой файл по этому пути точно есть?
Или ошибка "Read beyond end of file"? Тогда Reset нужно с параметром, соответствующим длине блока, который считывается за раз. Как правило, указывают "1", а потом используют BlockRead с указанием количества считываемых байт.

Всего записей: 470 | Зарегистр. 12-02-2003 | Отправлено: 13:43 03-08-2011 | Исправлено: JAPWork, 13:57 03-08-2011
yse

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Project BODY.exe raised exception class EInOuError with message 'file not found.Process stopped.use Step or run to continue
 
 
нo сам .ехе как странно создается  
 
Добавлено:
а как сделатъ тогда если файл не сушествует то создать
 
 
можно ли так сделлатъ
if not FileExists(fName) then
  begin
    AssignFile(f, fName);
    try
      try
        Rewrite(f);
      except
      end;
    finally
      CloseFile(f);
    end;
    result:='';
    Exit;
  end;
 
и что добавить в результат или оставить пустым
 result:='';

Всего записей: 36 | Зарегистр. 29-07-2011 | Отправлено: 14:39 03-08-2011 | Исправлено: yse, 15:01 03-08-2011
JAPWork

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yse
То, что .exe создается, так это так и должно быть. Ошибок компиляции нет - получите исполняемый файл.
 
Создавать таким образом файл - можно. Относительно результата - ваша функция вроде бы возвращает последнюю строку из файла (ведь так получается?). А если файл пустой, то логично - вернуть пустую строку.
Хотя тут все зависит от того, что Вам нужно.
Кстати, комментарий в цикле до EOF насчет добавления в Memo1 странный. То, что Вы в цикле последовательно результату присвоите значение всех строк в файле вовсе не означает, что по окончанию работы функции Read у Вас чудесным образом в результате будут все строки. Там будет только последняя...

Всего записей: 470 | Зарегистр. 12-02-2003 | Отправлено: 15:49 03-08-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 101 102 103 104 105 106 107 108 109 110 111

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (версии 2009, 2010 Weaver, 2011 Fulcrum)


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru