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

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

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

ShIvADeSt (07-04-2008 02:27): продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=9383  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

delover

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

Цитата:
sNumbers := #$10  


Код:
 
var
  i: Integer;
  c: Char;
  s: string;
begin
  s := #$10 + 'bla-bla-bla';
  s := #$10'bla-bla-bla';   // где +?
  s := #$10 + #10#$10; //длинна 3?
  i:=16;   //это в десятичной системе 16
  i:=$16;   //в десятичной 22
  i:=10;   //...
  i:=$10;   //это в шеснадцатиричной системе 10 а в десятичной 16  
  c:=#16;   //это символ с кодом 16
  c:=Char(i);   //это будет символ с номером i значит номер 16.
  c:=#$10;   //это будет символ с десятичным номером шеснадцать
  s := #$10;
  c:=s[1];   //это будет то же самое
  i:=Byte(s[1]);   //это 16
  Inc(i, 4);   //это увеличит i
  Inc(Byte(c), 4);   //это увеличит код символа с
  Inc(Byte(s[1]), 4);   //это увеличит s[1]
  Dec(i, 4);   //это уменьшит  
 

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 16:51 29-01-2008
vassal76

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
delover
Огромное спасибо, сегодня попробую. Я предполагал что придется какую-нибудь процедуру лепить, но не знал как.
 
Добавлено:
greenpc
Ура! Работает! Уже проверил, вариант после // или.
Спасибо.

Всего записей: 23 | Зарегистр. 21-12-2007 | Отправлено: 12:12 30-01-2008
Chuvakstepan



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Подскажите пожалуйста как реализовать следущее:
1) При перетаскивании файла на EXE программы, файл загружался бы в RichEdit
2) если программа открыта, то надо при перетаскивании файла на сам RichEdit открыть его там же

Всего записей: 202 | Зарегистр. 29-01-2007 | Отправлено: 18:43 30-01-2008
Jokerjar79



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Chuvakstepan, в DRKB есть пример реализации (и, вроде, не один). Да и вообще хорошая вещь, много интересного для себя там найдешь

Всего записей: 710 | Зарегистр. 08-09-2007 | Отправлено: 19:00 30-01-2008
Chuvakstepan



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Jokerjar79
Можно пример отдельно пожалуйста?
А то 30 Мб буду долго качать...

Всего записей: 202 | Зарегистр. 29-01-2007 | Отправлено: 19:41 30-01-2008 | Исправлено: Chuvakstepan, 19:42 30-01-2008
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот пример из DRKB (всетаки не поленитесь ее скачать, ОЧЕНЬ полезная штука):
Автор: Nomadic

Код:
TForm1 = class(TForm)
...
private
   { Private declarations }
   procedure WMDropFiles(var M: TWMDropFiles); message WM_DROPFILES;
...
end;
 
var
Form1: TForm1;
 
implementation
 
uses
StrUtils, ShellAPI, ComObj, ShlObj, ActiveX;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
...
DragAcceptFiles(Handle, True);
...
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
...
DragAcceptFiles(Handle, False);
...
end;
 
procedure TForm1.WMDropFiles(var M: TWMDropFiles);
var
hDrop: Cardinal;
n: Integer;
s: string;
begin
hDrop := M.Drop;
n := DragQueryFile(hDrop, 0, nil, 0);
SetLength(s, n);
DragQueryFile(hDrop, 0, PChar(s), n + 1);
DragFinish(hDrop);
M.Result := 0;
FileOpen(s);
end;
 
procedure TForm1.FileOpen(FileName: string);
begin
if CompareText(ExtractFileExt(FileName), '.lnk') = 0 then
   FileName := ResolveShortcut(Application.Handle, FileName);
DocName := ExtractFileName(FileName);
Caption := Application.Title + ' - ' + DocName;
...
end;
 
function ResolveShortcut(Wnd: HWND; ShortcutPath: string): string;
var
obj: IUnknown;
isl: IShellLink;
ipf: IPersistFile;
pfd: TWin32FindDataA;
begin
Result := '';
obj := CreateComObject(CLSID_ShellLink);
isl := obj as IShellLink;
ipf := obj as IPersistFile;
ipf.Load(PWChar(WideString(ShortcutPath)), STGM_READ);
with isl do
begin
   Resolve(Wnd, SLR_ANY_MATCH);
   SetLength(Result, MAX_PATH);
   GetPath(PChar(Result), Length(Result), pfd, SLGP_UNCPRIORITY);
   Result := PChar(Result);
end;
end;
 

Всего записей: 2322 | Зарегистр. 24-05-2007 | Отправлено: 21:00 30-01-2008
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как в resourcestring нормально прописать знаки \n ? Они указывают на переход на следующую строку. В редакторе ресурсов делается Текст\nТекст и тексты на 2 строчках. А тут если прописать \n, то получается \\n... И поэтому строки лепятся в одну. И кстати подскажите где найти инфу о кодах. То есть всем известные #13#10 - переход на строку. А подскажите другие.

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 01:34 31-01-2008
Chuvakstepan



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Frodo_Torbins спасибо!
 
Подскажите, почему не работает следущее:
Lines.LoadFromFile(LASTFILE.Caption)
 
в LASTFILE.Caption прописан полный путь к файлу
 

Всего записей: 202 | Зарегистр. 29-01-2007 | Отправлено: 07:11 31-01-2008 | Исправлено: Chuvakstepan, 08:15 31-01-2008
RostY



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

Всего записей: 387 | Зарегистр. 11-01-2006 | Отправлено: 09:44 31-01-2008
vidic777



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
А по моей проблеме (перевод проекта из  BCB5 в RS2007) так и не найдется ответа ? Очень нужно ! Или подскажите где можно почитать про переход от одной среды к другой ?
 
Заранее спасибо.

Всего записей: 1313 | Зарегистр. 16-02-2005 | Отправлено: 10:40 31-01-2008
Czechoslovak



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Maks150988
 
Я думаю это тебе поможет http://aimatrix.nm.ru/computer/MyHandiworks4.htm

Всего записей: 175 | Зарегистр. 27-06-2007 | Отправлено: 10:44 31-01-2008
Chuvakstepan



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

Вот такая вот ошибка, при пробовании открыть файл

Всего записей: 202 | Зарегистр. 29-01-2007 | Отправлено: 12:00 31-01-2008
Czechoslovak



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
так что это за имя файла ...&C:\...

Всего записей: 175 | Зарегистр. 27-06-2007 | Отправлено: 13:42 31-01-2008
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Chuvakstepan
Имя файла не должно содержать ":"
C:\Документы\Мейкер\Delphi\RightPad\&C:\Документы\Скрипты\Corona\Splash Corona.xml
 
Возможно в скрипте есть ошибка типа:
  filename:=format('%s&%s', [extractfilepath(f1), f2]);
а надо так:
  filename:=format('%s'&'%s', [extractfilepath(f1), extractfilename(f2)]);
 

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 14:04 31-01-2008
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maks150988
#13 - это один ASCII символ с кодом 13 (в шестнадцатеричной системе 0D). Подробнее тут: http://ru.wikipedia.org/wiki/ASCII

Всего записей: 2322 | Зарегистр. 24-05-2007 | Отправлено: 14:13 31-01-2008 | Исправлено: Frodo_Torbins, 14:15 31-01-2008
Chuvakstepan



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Czechoslovak
delover
в LASTFILE.Caption прописан полный путь к файлу (он правилен)
 
Lines.LoadFromFile(LASTFILE.Caption)  
 
Откуда взялся путь к EXE приложения вначале?

Всего записей: 202 | Зарегистр. 29-01-2007 | Отправлено: 14:25 31-01-2008
Jokerjar79



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Поставь брэйкпоинт и посмотри по шагам

Всего записей: 710 | Зарегистр. 08-09-2007 | Отправлено: 15:27 31-01-2008
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите пожалуйста почему не выводится информация о размере файла. код такой:
 

Код:
 
function Format(fmt: string; params: array of const): string;
var
  pdw1, pdw2        : PDWORD;
  i                 : integer;
  pc                : PCHAR;
begin
  pdw1 := nil;
  if length(params) > 0 then
    GetMem(pdw1, length(params) * sizeof(Pointer));
  pdw2 := pdw1;
  for i := 0 to high(params) do
  begin
    pdw2^ := DWORD(PDWORD(@params[i])^);
    inc(pdw2);
  end;
  GetMem(pc, 1024 - 1);
  try
    ZeroMemory(pc, 1024 - 1);
    SetString(Result, pc, wvsprintf(pc, PCHAR(fmt), PCHAR(pdw1)));
  except
    Result := '';
  end;
  if (pdw1 <> nil) then
    FreeMem(pdw1);
  if (pc <> nil) then
    FreeMem(pc);
end;
 
  function FmtFileSize(Size: Integer): string;
  begin  
    if Size >= $F4240 then
      Result := Format('%.2f', [Size / $F4240]) + ' Mb'
    else  
    if Size < 1000 then  
      Result := IntToStr(Size) + ' bytes'  
    else  
      Result := Format('%.2f', [Size / 1000]);
  end;
 

 
например переменной size имеем число 55555. однако конечный результат отображается как f символ. подскажите что делаю не так. неужели функция format неправильно форматирует число?

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 01:33 01-02-2008
Jokerjar79



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ну видимо неправильно работает твоя функция format. Почему не пользуешься той, что в SysUtils?

Всего записей: 710 | Зарегистр. 08-09-2007 | Отправлено: 03:42 01-02-2008
Mandor Sawall

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maks150988
Ну, сначала скажем, что у wsprintf нет типа 'f'. Поетому и отображается как символ. Потом - у wsprintf вообще нет какой-то float - real, double, extended. И наконец - вы все аргументи насильствено делаете DWORD, несмотря на том, что снаружи подаете double.
И вообще, все ето обнаруживается через обычной debug.
 
Добавлено:
Еще на первой странице поиска в Google нашел вот ето:
http://www.delphisources.ru/pages/faq/base/wvsprintf.html

Всего записей: 119 | Зарегистр. 20-03-2003 | Отправлено: 09:51 01-02-2008
   

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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 3
ShIvADeSt (07-04-2008 02:27): продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=9383


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru