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

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

Модерирует : 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

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

akaGM

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

Флудильня :)
(не знаешь где спросить? спрашивай здесь!)

Флудильня-говорильня, Флеймоварня-отвечальня

 
Флейм, флуд, holy wars, а также о программировании вообще :)
Допускаются любые обсуждения и высказывания на тему программирования и около.
Просьба не переходить на личности и не обсуждать политику и тд...
 

Решаемые задачи:
. . . .
       
. . . .
 
 


 

первый пост топикстартера
...
во всех разделах форума есть, а чем мы хуже?
есть ведь откровенный флуд почти во всех топиках, так почему бы его не организовать...
сюда можно и holy wars перенести...
название темы естественно обсуждаемо, тут я ни на что не претендую...

в качестве затравки...
 
прочитал небольшую заметку о разработке советского/российского космического ПО...
и офигел...
 
оказывается почти всё ПО разработано и продолжает разрабатываться на
внимание!
на Модуле-2!
включая новую ГЛОНАСС...
о как!
 
--akaGM :)


Всего записей: 24115 | Зарегистр. 06-12-2002 | Отправлено: 15:08 05-11-2008 | Исправлено: akaGM, 02:23 18-09-2023
mdid

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
народ, где можно стянуть обычный список английских слов?
я смотрел в сторону hunspell, но там префиксы у слов непонятные, а список этих префиксов я не нашел

Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 00:38 27-09-2014 | Исправлено: mdid, 00:40 27-09-2014
protoror



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
например тут
http://stackoverflow.com/questions/4456446/dictionary-text-file

Всего записей: 494 | Зарегистр. 23-11-2009 | Отправлено: 11:13 29-09-2014
Skif_off

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
comrades, подскажите, пожалуйста, в чем может быть дело и есть ли решение:
есть консольная утилита jpegtran, нормально работает с UNC-путями, но если путь превышает MAX_PATH - имеем болт ошибку Can't open file for reading на WinXP SP(2|3), при этом на Win7 нормально отрабатывает).

Всего записей: 6487 | Зарегистр. 28-01-2008 | Отправлено: 12:34 01-10-2014
dred2k



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Skif_off
А файловая система на XP диким случаем не FAT32 ?

Всего записей: 403 | Зарегистр. 15-02-2006 | Отправлено: 19:46 01-10-2014
Skif_off

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dred2k
Обижаете Нормальная NTFS, размер кластера 4096 байт. Запустил сейчас там WinPE на базе Win7 - нормально, все файлы доступны.

Всего записей: 6487 | Зарегистр. 28-01-2008 | Отправлено: 00:35 02-10-2014
protoror



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Skif_off
ответ тут
http://stackoverflow.com/questions/2825798/should-i-deal-with-files-longer-than-max-path

Всего записей: 494 | Зарегистр. 23-11-2009 | Отправлено: 16:29 02-10-2014
Skif_off

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
protoror
Не нашёл, там всё то же самое, что и везде, вообще популярная ссылка. Мне интересно, почему программа видит файлы с over MAX_PATH и работает с ними в Win7 и не работает в WinXP, хотя префикс "\\?\" работает в обеих?
Применительно к WinXP увидел только эту фразу

Цитата:
Windows XP and I believe Vista both have problems in Explorer when nesting directories with long file names.

Всего записей: 6487 | Зарегистр. 28-01-2008 | Отправлено: 17:45 02-10-2014
protoror



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Skif_off
А эта строчка вам не о чем не говорит?
This limitation is baked into a lot of software written in C or C++
Проблемма в софте

Всего записей: 494 | Зарегистр. 23-11-2009 | Отправлено: 10:22 03-10-2014
Skif_off

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
protoror
Вы не могли бы развернуть мысль? Иначе у меня складывается впечатление, что в постах вы увидели только "MAX_PATH" и больше ничего.
Повторю, на всякий случай с цифрами:
1) на Win7x64 консольная утилита jpegtran.exe отлично работает с префиксом "\\?\" и тестовыми файлами длиной 10-12 символов + 3и символа на расширение "jpg", лежащими в тестовом же каталоге:
- уровень вложенности - 14;
- общая длина пути включая последний обратный слэш и без префикса - 330 символов.
2) на WinXP SP2 x86 и WinXP SP3 x86 консольная утилита jpegtran.exe отлично работает с префиксом "\\?\", но не видит тестовые файлы в тестовом каталоге.
Символы: латинские буквы, арабские цифры, тире, нижнее подчеркивание. Пробелов нет.
 
Из чего делаю вывод: консольная утилита jpegtran.exe использует юникодные версии функций, но почему-то не в полной мере использует их на старушке WinXP. Почему?

Всего записей: 6487 | Зарегистр. 28-01-2008 | Отправлено: 12:02 03-10-2014
protoror



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Skif_off
ну дак почитайте исходники jpegtran, как найдете почему, заодно и нам раскажете

Всего записей: 494 | Зарегистр. 23-11-2009 | Отправлено: 14:11 03-10-2014
Skif_off

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
protoror
Дык читалка не выросла, иначе зачем тут спрашивать?

Всего записей: 6487 | Зарегистр. 28-01-2008 | Отправлено: 15:22 03-10-2014
SuPriTo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Skif_off
MAX_PATH=260 символов. Вы что хотите от WinXP, если у вас 330 символов только в пути?
Уменьшите путь и посмотрите будет ли работать? Если будет работать, значит проблема в кол-ве символов в пути.

Всего записей: 1477 | Зарегистр. 24-03-2009 | Отправлено: 15:57 03-10-2014
protoror



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SuPriTo
он этого не понимает, еще на win95 запускал бы и удивлялся почему не работает...
например в делфе вот так объявлено:
 
unit Winapi.Windows;
 
const
  MAX_PATH = 260;
  {$EXTERNALSYM MAX_PATH}

Всего записей: 494 | Зарегистр. 23-11-2009 | Отправлено: 16:57 03-10-2014
Skif_off

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

Цитата:
MAX_PATH=260 символов. Вы что хотите от WinXP, если у вас 330 символов только в пути?  

http://msdn.microsoft.com/en-us/library/aa365247.aspx

Цитата:
The Windows API has many functions that also have Unicode versions to permit an extended-length path for a maximum total path length of 32,767 characters.

Беру первую попавшуюся функцию на MSDN, GetFullPathName :

Цитата:
In the ANSI version of this function, the name is limited to MAX_PATH characters. To extend this limit to 32,767 wide characters, call the Unicode version of the function and prepend "\\?\" to the path.
...
Requirements:
Minimum supported client:
Windows XP [desktop apps only]

На Win7 работает, значит - используются юникодные версии функций. Дело в desktop apps only?
 
MAX_PATH, MAX_PATH, но почему-то никто не спросил "А как ты умудрился в win95 WinXP создать тестовый каталог с 330ю символами в пути?!!"...
И, к слову, список файлов в тестовом каталоге в этой самой WinXP получаю скриптом AutoIt, им же запускаю jpegtran.exe.

Всего записей: 6487 | Зарегистр. 28-01-2008 | Отправлено: 18:25 03-10-2014 | Исправлено: Skif_off, 18:27 03-10-2014
ItsJustMe

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Skif_off
Как правильно сказал protoror, исходники jpegtran открыты, так что дебажьте ее сколько душе угодно. Заодно, может, чем ijg.org поможете.

Всего записей: 2028 | Зарегистр. 02-09-2005 | Отправлено: 20:16 03-10-2014
Skif_off

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

Цитата:
исходники jpegtran открыты, так что дебажьте ее сколько душе угодно. Заодно, может, чем ijg.org поможете.  

Может у меня с лицом что не то? Отвечал же.
 
Добавлено:
С английским не очень, но всё-таки написал в саппорт.
И отвечу себе же, если правильно понял: desktop apps only означает "не Metro".
 

Всего записей: 6487 | Зарегистр. 28-01-2008 | Отправлено: 22:09 03-10-2014 | Исправлено: Skif_off, 22:50 03-10-2014
wzn



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DBF в разных формах (TForm).
Как-то раз понадобилось обратиться к данным из другой формы и всё получилось.
Однако, не в этот раз...
Есть две формы:
1-я - использует DBF (список событий). Никаких таблиц там не планировалось визуально.
однако, нажимаем на кнопку и попадаем в другую
2-ю - редактор этой таблицы.
Так было задумано.
В 1-й форме есть  
====
uses ... ,db,dbf,FileUtil,RTTIControls, Unit2, ...
type
FForm1 = class...
 ...
 Datasource1: Tdatasource;
 DBF1:TDBF;
 ...
====
Во 2-ой обратных ссылок нет.
Есть:
type
FForm2 = class...
 ...
 DBGrid1:TDBGrid;
 DBNavigator: TDBNavigator;
 ...
====
Набираю в Unit2:
Form1.
После точки ожидание не приводит к результату.
А нужно: Form1.DBF1.Insert;
Даже если пишу руками:  Err=Identifier not found.
Куда копать?
Вот в Кларионе там все на нитях и если из модуля A вызываешь модуль B, то все открытые файлы и переменные видны в B. Хотя бы в виде копий. А тут как работать?
Пока что перенёс все описания в Unit2 и из первого обращаюсь к нему. Вроде проходит, но мне нужно (наверное) не  то. Unit2 может и не быть в следующей задаче, а обработать (без показа) всё-равно нужно в первом. Описать DBF и таблицу глобально - тоже не хорошо.
Нужно -то всего сделать:
В первом модуле описать/открыть/создать, обработать DBF, вывести результат (не данные с DBF, а результат их обработки по каждой записи) и закрыть DBF. И так каждые 2 секунды. При этом DBF может быть изменен внешней программой или другим модулем (за эти 2 сек). Например в модуле 2 я хочу отредактировать описанные в первом модуле DBF. Как реализовать. Пока что выходит задом на перед.
Анализировать строки нужно сравнивая (т.е. посимвольно русские буквы).
DBF - исключительно DOS кодировка. И как тогда объявлять Datasource и размеры полей?
На текущий момент описание полей идёт по ходу выполнения, а не на стадии разработки. То есть я открывая DBF еще не знаю какие поля там есть. Структура должна сформироваться перед чтением записей "по факту номенклатуры и длинны". Возможно будет вызван диалог при несоответствии.
И где учитывать распухание дабы не потерять половину строки?
Уйма вопросов. Куда задавать? Здесь?
 
ps. Это моя вторая программа на Лазарусе и первая с таблицами DBF.
ps2. Формат DBF: DBF-IV, CP866 - только! Есть ньюансы преобразования/редактирования?
Про функции конвертации знаю, а вот куда их воткнуть правильно?  
Чтоб DBF в 2 раза не распух и чтоб строки посимвольно обрабатывать без проблем  
и лишних преобразований.

Всего записей: 10 | Зарегистр. 11-11-2008 | Отправлено: 12:27 12-11-2014 | Исправлено: wzn, 12:54 12-11-2014
ne_viens

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

Цитата:
...
На Win7 работает, значит - используются юникодные версии функций. Дело в desktop apps only?  


Цитата:
...The shell and the file system have different requirements. It is possible to create a path with the Windоws API that the shell user interface is not able to interpret properly...

 
Подпилили cmd.exe под Win7 наверно.
 

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 00:26 13-11-2014 | Исправлено: ne_viens, 00:27 13-11-2014
Kmich



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
wzn
в unit2  должен быть  в uses unit1. чтобы переменные были в области видимости.
 
В первом модуле описать/открыть/создать, обработать DBF, вывести результат (не данные с DBF, а результат их обработки по каждой записи) и закрыть DBF. И так каждые 2 секунды. При этом DBF может быть изменен внешней программой или другим модулем (за эти 2 сек). Например в модуле 2 я хочу отредактировать описанные в первом модуле DBF. Как реализовать. Пока что выходит задом на перед.  
 
если данных не много то можно в память залить их и после обработки сверять данные из памяти и из DBF по каждой строке.
 
И как тогда объявлять Datasource и размеры полей?  
 
а размеры полей зачем нужны? они сами в Dataset  подгружаются при открытии DBF.

Всего записей: 192 | Зарегистр. 21-01-2005 | Отправлено: 08:05 13-11-2014
wzn



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всё было бы замечательно, но в Unit1 уже есть uses unit2. И при добавлении встречной команды - ругается. Однако, пока ждал ответа, обнаружил что если прописать в UNIT2 инспекторе объектов встречно (MasterSource  Form1:... ) то компилирует, хотя по прежнему не дает реакции после точки по тексту на ссылки в первый UNIT1.
Ну хоть в каждой форме файлы открывать заново!  
Вообще всё должно функционировать одним модулем UNIT1.
Единственное окно без коррекции базы - толко обработка событий и звонок в означеное время, типа шедулера. А правка может вообще не с этой машины идти. Так что Unit2 - рудимент. И нужен только для отладки. Вот он и должен использовать написаное в UNIT1 по максимуму. Там открытие, работа, а в модуле 2 только процедуры-паразиты. То есть уходя/запуская UNIT2 (экранную форму) я должен присосаться к уже открытым записям модуля1, поправить их "по ходу" и свалить, возможно с коррекцией базы. Модуль1 только читающим был задуман, но это не принципиально.
 
По ходу возник еще вопрос, если индексируем (один файл индексов) по 2-м,3-м полям, то как это написать?
Dbf1.AddIndex('По_полю1','Pole1',[ixPrimary,ixUnique]);
а куда воткнуть 'Pole2','Pole3'?
Отсортировать в UNIT2 по 3-м полям, показать там-же, переписать базу из пары десятков значений не на долго заблокировар от UNIT1 файлы и свалить удалив файл индексов (он нужен только в UNIT2!)
При этом UNIT1 работает (должен работать) толко с одним DBF, даже не пытаясь ломиться в  индексы. Такое возможно?
 
ps. Lazarus IDE 1.1 (может в версии дело?).  {$H+}
ps2. Прежние вопросы по прежнему актуальны. Особенно о черном ящике и моменте чтения/преобразование считанного DOS-текста из базы и попадания его уже разпухшим в UTF8 строки экрана (или таблицах памяти). Как же достал этот UTF8!
 
Где:
Поле_таблицы := CP866toUTF8(Поле_DBF);   // При этом поле таблицы должно быть 2x поля DBF по длине (asString)
и где обратно преобразуется?  В каком месте/свойстве/событии прописывать и что прописывать?
Как объяснить Лазарусу, что строки в памяти должны быть длиннее строк базы в 2 раза(!) минимум?
Нужно нечто, позволяющее решить эту проблему единовременно. Чтоб после просто файлы кидать в проект и не думать об их длине и не возиться с каждым полем в отдельности.
 
А если DBF будут с разными кодировками? Страшно даже подумать!  Правда, UTF8 не предвидится в любом случае, а вот гемор при обработке обеспечен.
 
Мне не нужны в базе (файле DBF) поля двойного размера. Надеюсь, использовать метод в дальнейшем. Понятно, что для десятка записей не принципиально. Я ищу метод. Хорошо бы самый правильный с точки зрения Lazarus.
Пока что Lazarus пытается эти поля сделать одинаковыми.
 
ps3. Разработка на W7, а вот работать должно на V7,XP как минимум.   А Lazarus 1.2 сильно отличается с точки зрения работы с DBF? Может там такие проблемы уже решены?

Всего записей: 10 | Зарегистр. 11-11-2008 | Отправлено: 13:15 13-11-2014 | Исправлено: wzn, 13:57 13-11-2014
Открыть новую тему     Написать ответ в эту тему

Страницы: 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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Флудильня :) (не знаешь где спросить? спрашивай здесь!)


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru