BearKing

Pascal / Delphi

В теме 110 сообщений

LITR

мб при создании базы надо было указать формат поля? то что ты пишешь - наш российский формат даты, то что получаешь - западный (если конечно дата в твоем примере - 10 марта))) ). Да и потом не вижу тут проблемы. Читай поле как западную дату, а выводи юзеру как нашу

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

sla

При создании базы формат поля был указан. dd.mm.yy

ошибка можно сказать плавающая. То она есть то ее нет.

Добавлю информации: при первой попытки записи все нормально, последующие переворачивают дату.

Следил за переменной выводя паралельно результат на форму - Label выводит правильно через strtodate.

Программа год проработала без проблем. Началось с середины февраля...

Имеются беспочвенные подозрения на обновления windows :)

Ваше предложение хорошее но возможно не самое правильное.Желательно найти причину...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Имеются беспочвенные подозрения на обновления windows :)

Панель управления->Язык и региональные стандарты

 

Ваше предложение хорошее но возможно не самое правильное.Желательно найти причину...

Необходимо проверить - чего гадать-то)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

sla

язык и стандарты проверены сразу.

"не самое правильное" по поводу метода решения - брать дату и менять ее. Как определить правильная ли дата в базе? Что юзер реально хотел ввести неизвестно.

Я постараюсь снести обновления и привести систему к первоначальному виду. Кстати Windows 2000.

На другом компе программа нормально работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проблема решена. Скорее всего действительно какое-то обновление криво встало в систему.

Установка MDAC версии 2.7 поставило все на свои места. :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Народ, требуется хелп.

С помощью какого компонента и как можно вставить doc файл. В общем, есть этот файл и в нем инфа (картинки, текст), надо вывести это на форму. Я полный ламер в этом деле. Надо сделать электронный справочник-пособие, информация есть, только раскидать по формам.

 

З.Ы. Если у кого есть исходник самого простого справочника на делфи, буду очень признателен если скините.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот вам ссылочка: delphisources.ru. тут есть и учебники, и исходники и чёртова куча статей что и как делать, чтобы получить нужное

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ребят, набросайте функцию на Паскале, которая удаляет из

данной строки все начальные и конечные пробелы, если такие

есть, но не пробелы в середине между слов.

Прототип её, очевидно такой:

 

function DelBeginEndSpaces ( s: string ) : string ;

 

А если аргумент пустой или состоит из одних только пробелов, то и вывод

пусть будет пустой.

 

Пример работы: аргумент '  иди на ' ответ 'иди на'

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ребят, набросайте функцию на Паскале, которая удаляет из

данной строки все начальные и конечные пробелы, если такие

есть, но не пробелы в середине между слов.

Прототип её, очевидно такой:

 

function DelBeginEndSpaces ( s: string ) : string ;

 

А если аргумент пустой или состоит из одних только пробелов, то и вывод

пусть будет пустой.

 

Пример работы: аргумент '  иди на ' ответ 'иди на'

Зачем ее писать если есть готовая - Trim()?

  • Upvote 3

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как же хорошо, что есть знающие люди !

 

У меня одна функция читает из Excel, вот в неё и надо добавить этот Trim.

 

....

var e : Variant;

...

  e:=createoleobject('excel.application');
  Form1.OpenDialog1.Filter:='Файлы Excel|*.xls;*.xlsx';
  if opendialog1.Execute then e.workbooks.open(opendialog1.FileName) else goto fire;
  e.visible:=true;
  cline:=0;
  for c:=1 to 10 do
  begin
  if (GetCell(c,1)='1') and
     (GetCell(c,2)='2') and
     (GetCell(c,3)='3') then cline:=c;
  end;
  if cline=0 then begin Edit1.Text:='Нет строки 1,2,3....'; goto fire; end;

  //обработка далее

...

fire: e.Quit; e:=Unassigned;

...

 

и вот тут:

 

function GetCell (c,b:integer) : string ;
var s:string;
begin
s:=e.workbooks[1].worksheets[1].cells[c,b];
GetCell:=Trim(AnsiLowerCase(s));
end;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Привет! нужна помощь

есть число  $1FFFE00  longword типа, нужно получить на выходе $00FEFF1F как бы зеркальное отображение.Спасибо.

$abcd -- $dcba

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Привет! нужна помощь

есть число  $1FFFE00  longword типа, нужно получить на выходе $00FEFF1F как бы зеркальное отображение.Спасибо.

$abcd -- $dcba

Наверно самое простое преобразовать число в строку, отзеркалить ее и обратно в число.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Наверно самое простое преобразовать число в строку, отзеркалить ее и обратно в число.

ага, буду пробовать.спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

$1FFFE00 <> $00FEFF1F

 

$abcd <> $dcba

 

Обратите внимание ! Разный тип зеркальности !

В одном октеты внутри байтов переставляются, а в другом нет !

 

Так какой же тип нужен ?

 

$12345678 <> $87654321 (как строка посимвольно)

 

или

 

$12345678 <> $78563412 (обмен байтами)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

/*  byte swap */

 

longword x;

 

result:=

((x shl 24) and $FF000000) or

((x shl 8) and $00FF0000) or

((x shr 8) and $0000FF00) or

((x shr 24) and $000000FF) ;

 

тут самый левый и самый правый and в общем -то не нужны, т.к. shl/shr пустые места и так нулями заполняет,

но для понимание общего принципа оставим. Будем считать, что при сдвигах "из-за угла" выезжает какой-то

шум и он нуждается в отсечении, хотя там нули выезжают ;o)

А ещё or можно заменить на +

 

Напиши сам то же самое для nibble swap.

Подсказка - будет не 4, а 8 слагаемых, и маски будут с одним F.

Сдвиги будут:

28 влево и маска $F0000000

20 влево и маска $0F000000

12 влево и маска $00F00000

04 влево и маска $000F0000

04 вправ и маска $0000F000

12 вправ и маска $00000F00

20 вправ и маска $000000F0

28 вправ и маска $0000000F

 

 

coded by  :fu: :fu: :fu:

b1a35569d574dbd72cece9b4675f80ad.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

$1FFFE00 <> $00FEFF1F

 

$abcd <> $dcba

 

Обратите внимание ! Разный тип зеркальности !

В одном октеты внутри байтов переставляются, а в другом нет !

 

Так какой же тип нужен ?

 

$12345678 <> $87654321 (как строка посимвольно)

 

или

 

$12345678 <> $78563412 (обмен байтами)

Привет, скорее второй вариант вашего примера. вторым вариантом я указал условность "зеркалки".

у себя сделал через shr $18,$10,$8  далее масками  and $ FF и т.д перебором, практически тоже самое что вы указали сообщением выше. Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Задача посчитать количество строк в файле excel в лазарусе

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну не знаю как там в Лазарусе, а я делал на Дельфи.

Используется API офиса, то есть если офиса на этой машине нету - то болт.

А так всё просто:

 

var e : Variant;

 

function GetCell (c,b:integer) : string ;
var s:string;
begin
s:=e.workbooks[1].worksheets[1].cells[c,b];
GetCell:=s;   //    GetCell:=Trim( AnsiLowerCase(s) );
end;

 

.............

 

begin
  e:=createoleobject('excel.application');
  Form1.OpenDialog1.Filter:='Файлы Excel|*.xls;*.xlsx';
  if opendialog1.Execute then
  e.workbooks.open(opendialog1.FileName) else goto fire;
  e.visible:=true;

  cline:=0;
  for c:=1 to 10 do
  begin
  if (GetCell(c,1)='1') and
     (GetCell(c,2)='2') and
     (GetCell(c,3)='3') then cline:=c;
  end;
  if cline=0 then begin Edit1.Text:='Нет строки 1,2,3....'; goto fire; end;
  // поиск того что мне надо в документе

  // использование GetCell( номер строки, номер столбца )

 

// а это точка выхода, на неё происходит переход свыше, если что-то пошло нетак

// она удаляет объект и закрывает за собой процесс excel.exe

 

fire: e.Quit; e:=Unassigned;

 

end;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

там в Delphi оконный режим когда части программы впиываешь в stinggrid button edit и т.д.... Не оч понял чт окуда там писАть...

 

_________________________________________________

 

http://www.tvoe-nebo.ru/za-gorodom/

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Помогите написать программу печати графической информации средствами Win Api 32 под Windows XP, на Delphi.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приятель, я писал эмулятор принтера Epson Stylus 3000 на Delphi 7.
Реальный образец очереди печати прилагается.
Для отладки поставь PDF24 чтобы не тратить бумагу и краску на реальном принтере. На нём же можно изучать печать в различных разрешениях, сохранять результаты в виде картинок.
Единственное отличие у него от настоящего принтера в том, что размер бумаги всегда полный 210x297 мм без полей.
А реальный принтер будет рапортовать о себе размер немного меньший из-за своих полей.
Мой пример имеет ширину 209мм и скорее всего в реальный принтер он не влезет по ширине. Но у нас принтеры на которых это используется сами по себе рулонные и по win api рапортуют о себе полный размер 210x297, который и печатают на рулон без зазора между листами. В итоге распечатка на рулон точно соответствует оригиналу Epson 3000 как он это печатал под ДОСом. А пример - это и есть сырые данные, которые посылались в LPT-порт ему.
Удачи.
ps. Но всё же это не WinAPI, это
дельфийский uses Printers

 

Ссылка в описании в личке.

 

c013cadf102c4731892b78a4b350fe8b.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Привет всем!

Делфисты выручайте!

вопрос:  Имеется запрос типа  760 AA 00 02 21 XX нужно следующее

чтобы переменная АА изменялась по порядку от $10  до $1F и снова $10 и т.д. "по кругу",  это я реализовал. не могу сообразить как мне поступить чтоб в любой момент выполнения программы переменная АА была на 1 больше от предыдущего. т.е. как то ее сохранять и опять вызывать прибавлять 1 и вносить в запрос....ну не могу сообразить как это сделать. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да не, в Си есть шикарная конструкция ++

А в Дельфае нету.

Думай сам, хитри.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти