Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Начался отбор тем для DRKB 3.0 
:(
    Опции темы
Rouse_
Дата 27.9.2006, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 469
Регистрация: 23.4.2005

Репутация: 5
Всего: 29



Итак,  Виталий Невзоров открывает следующий этап расширения Delphi Russian Knowledge Base . 
Что есть DRKB: это самая большая и полная в рунете база знаний по Дельфи, составленная по материалам форумов Vingrad.ru и Sources.ru, а так же других источников. Содержит более 2000 хорошо отклассифицированных и тщательно оформленных статей в формате chm (Windows Help).
Эта база составленна силами профессиональных программистов (и им сочуствующим) для программистов . 
Если вы желаете расширить эту базу своим материалом и стать совтором DRKB, то отправляйте Ваши материалы в данную ветку.
Добавление статьи в данную ветку происходит на Вашей доброжелательной основе.
Ваши материалы не рецензируются, но могут редактироваться.
Все статьи будут тщательно анализироваться сообществом модераторов форума и привлеченных извне специалистов по тематике статьи.
Статьи, помещеные в DRKB, обязательно будут иметь указание на автора статьи.
Большая просьба: не пишите по поводу непомещения Вашей статьи в DRKB. 
Если она не помещена в DRKB - значит она не прошла проверку на качество подачи материала или уровень изложения.
(Объяснения причин отсутствия статьи не разглашаются) 


M
Snowy
Все материалы или линки на них бросаем прямо в этот топ.
(На случай, если кто прочитал, но не заметил)



--------------------
 Vae Victis
(Горе побежденным (лат.))
Демо с открытым кодом: http://rouse.drkb.ru 
PM MAIL WWW ICQ   Вверх
Albinos_x
Дата 9.11.2006, 01:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Прикрепляю отредактированную статью по компаненте ExcelApplication ...

Она возможно ещё подвергнется редактированию... но это только тогда, когда появится свободное время, аего в ближайшее время пока не предвидится... smile 

в документе 18 стр.

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  _________MS_Excel.zip 24,39 Kb


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
tripsin
Дата 9.11.2006, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 10.4.2005
Где: Талица

Репутация: нет
Всего: 3



 Посмотрите. Может что-то мое сгодится.
PM MAIL WWW ICQ   Вверх
Rodman
Дата 14.11.2006, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 7
Всего: 122



Вот пример вывода данных (на примере XML, так же присутствует пример простейшего парсинга XML'я) в TDBGrid...

Но единственное примечание - требуется компонент из JEDI (или подобный)...



Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  XMLvsDBGrid.rar 6,20 Kb
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Rodman
Дата 15.11.2006, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 7
Всего: 122



И вот еще коварный вопрос по базам. С рудом нашел. В старой версии DRKB такого нет...

Может  пригодиться:
- создание Базы Access
Код

procedure CreateMSAccessDB(filename : String);
var
  DBEngine, Workspace: Variant;
const
  {Important to use the following constant as is}
  dbLangGeneral = ';LANGID=0x0409;CP=1252;COUNTRY=0';
  dbVersion30 = 64;
begin
if not FileExists(FileName+'.mdb') then begin
  //DBEngine := CreateOleObject('DAO.DBEngine');
  DBEngine := CreateOleObject('DAO.DBEngine.36'); //For DAO 3.5
  Workspace := DBEngine.Workspaces[0];
  try
    Workspace.CreateDatabase(filename, dbLangGeneral, dbVersion30);
  except on EOleException do
    ShowMessage('Невозможно создать!');
  end;
  end;
end;


- вывод количества таблиц в базе
Код

t:Tstringlist; 
... 
ADOConnection.GetTableNames(t, false);

PM MAIL WWW Skype GTalk YIM MSN   Вверх
Vit
Дата 15.11.2006, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Цитата(Rodman @  15.11.2006,  08:33 Найти цитируемый пост)
 вот еще коварный вопрос по базам. С рудом нашел. В старой версии DRKB такого нет...



Или версия совсем уж старая или плохо смотрели, есть такое...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Alex
Дата 15.11.2006, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Цитата(Akella @ 27.10.2006,  09:04)
Отлавливаем утечки памяти. 
При запуске главной формы включаем "ловушку".
По завершению приложения, если запуск был из под IDE, будет показано окошко с модулями, где есть утечка памяти.
Код

procedure TfmMain.FormCreate(Sender: TObject);
begin
//отлавливаем утечки памяти
  ReportMemoryLeaksOnShutdown := DebugHook <> 0;
end;

только не нужно это в таком виде включать в DRKB smile  Точнее код правильный, но описание к нему должно быть другим. Это код будет работать во все Delphi начиная с BDS2006 и в случаи утечек просто будет сообщения, что они есть без указания конкретных модулей. Для получения информации в каком модуле происходит утечка можно воспользоваться бесплатной библиотекой FastMM

Добавлено @ 21:43 
Строковые типы в Delphi. Особенности реализации и использования.

PS: Могу отдать как doc файл, если его проще будет вставлять в DRKB


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Snowy
Дата 16.11.2006, 02:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484




M
Snowy
Просьба, размещающим материал. 
Если вы не являетесь его автором, то указывайте авторство  :exclamation

PM MAIL   Вверх
Elfebet
Дата 17.11.2006, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

Репутация: 2
Всего: 14



Удаление HTML елементов из тектса. в ДРКБ есть данная тема, но приведенная функция при больших объемах файла (если уже больше 100кб!) просто зависает, а данная функция просто летает (html файл размером 14,1 мб (!!!) обработал за 0,577 секунд)
Код

function ConvertHTML(s: String): String;
var
  InTeg, InScript, InLink, InStyle:Boolean;
  i, j, len, NotInTegC: Integer;
begin
  len:=Length(s);
  NotInTegC:=0;
  InTeg:=False;
  InScript:=False;
  InLink:=False;
  InStyle:=False;
  SetLength(Result, len);
  for i:=1 to len do begin
    if (s[i]='<') and
       ((s[i+1]='b')or(s[i+1]='B'))and
       ((s[i+2]='o')or(s[i+2]='O'))and
       ((s[i+3]='d')or(s[i+3]='D'))and
       ((s[i+4]='y')or(s[i+4]='Y'))and
       ((s[i+5]=' ')or(s[i+5]='>'))then Break;
  end;
  for j:=i to len do begin
    if (s[j]='<') and
       ((s[j+1]='s')or(s[j+1]='S'))and
       ((s[j+2]='c')or(s[j+2]='C'))and
       ((s[j+3]='r')or(s[j+3]='R'))and
       ((s[j+4]='i')or(s[j+4]='I'))and
       ((s[j+5]='p')or(s[j+5]='P'))and
       ((s[j+6]='t')or(s[j+6]='T'))and
       ((s[j+7]=' ')or(s[j+7]='>'))then InScript:=True
    else if InScript and (s[j-8]='<')and(s[j-7]='/')and
       ((s[j-6]='s')or(s[j-6]='S'))and
       ((s[j-5]='c')or(s[j-5]='C'))and
       ((s[j-4]='r')or(s[j-4]='R'))and
       ((s[j-3]='i')or(s[j-3]='I'))and
       ((s[j-2]='p')or(s[j-2]='P'))and
       ((s[j-1]='t')or(s[j-1]='T'))and
       (s[j]='>')then begin InScript:=False; Continue; end;
    if (s[j]='<')and
       ((s[j+1]='a')or(s[j+1]='A'))and
       (s[j+2]=' ')then InLink:=True
    else if InLink and (s[j-3]='<')and(s[j-2]='/')and
       ((s[j-1]='a')or(s[j-1]='A'))and
       (s[j]='>')then begin InLink:=False; Continue; end;
    if (s[j]='<') and
       ((s[j+1]='s')or(s[j+1]='S'))and
       ((s[j+2]='t')or(s[j+2]='T'))and
       ((s[j+3]='y')or(s[j+3]='Y'))and
       ((s[j+4]='l')or(s[j+4]='L'))and
       ((s[j+5]='e')or(s[j+5]='E'))and
       ((s[j+6]=' ')or(s[j+6]='>'))then InStyle:=True
    else if InStyle and (s[j-7]='<')and(s[j-6]='/')and
       ((s[j-5]='s')or(s[j-5]='S'))and
       ((s[j-4]='t')or(s[j-4]='T'))and
       ((s[j-3]='y')or(s[j-3]='Y'))and
       ((s[j-2]='l')or(s[j-2]='L'))and
       ((s[j-1]='e')or(s[j-1]='E'))and
       (s[j]='>')then begin InStyle:=False; Continue; end;
    if InScript or InStyle or InLink then Continue;
    if (s[j]='<') then InTeg:=True
    else if InTeg and (s[j]='>') then InTeg:=False
    else if not InTeg then begin
      Inc(NotInTegC);
      Result[NotInTegC]:=s[j];
    end;
  end;
  SetLength(Result, NotInTegC);
end;

авторы: Elfebet, Fedia, Quadr0 


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
Elfebet
Дата 17.11.2006, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

Репутация: 2
Всего: 14



частый вопрос: найти все ссылки в html странице
Код

function NormalizeUrl(var Url:String):Boolean;
var i:Integer;
begin
  Result:=False;
  Url:=StringReplace(Url, '#13#10', '', [rfReplaceAll]);
  i:=Pos(' ', Url);
  if (i<>0) then Url:=Copy(Url, 1, i-1);
  Url:=StringReplace(Url, '"', '', [rfReplaceAll]);
  Url:=StringReplace(Url, '''', '', [rfReplaceAll]);
  if ((Pos(';', Url)<>0)or(Pos('mailto:', Url)<>0)or(Pos('file://', Url)<>0)) then Exit;
  if Url='' then Exit;
  Result:=True;
end;

function FindURLs(s:String):TStringList;
var NextFindURL:Boolean;
    idxPos:Integer;
    link:string;
begin
  Result:=TStringList.Create;
  NextFindURL:=true;
  idxPos:=1;
  while NextFindURL do begin
    idxPos:=PosEx('<a ', s, idxPos);
    if idxPos=0 then begin NextFindURL:=False; Continue; end;
    Inc(idxPos, 2);
    idxPos:=PosEx('href=', s, idxPos);
    if idxPos<=0 then Continue;
    Inc(idxPos, 5);
    link:=Copy(s, idxPos, PosEx('>', s, idxPos)-idxPos);
    if NormalizeUrl(link) then Result.Add(link);
  end;
end;

использование
Код

list:=TStringList.Create;
list.LoadFromFile('Ваш файл');
list:=FindURLs(list.Text);
ShowMessage(list.Text);
list.Free;

автор: Elfebet

тоже функция довольно быстрая, один не достаток надо фунции передавать текст с буквами нижного регистра, чтобы он нашел все ссылки, в такой ситуации я использовал функцию fastPosNoCase из FastStrings.pas (http://www.droopyeyes.com/downloads/faststrings.zip)


Это сообщение отредактировал(а) Elfebet - 20.11.2006, 12:02


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
Snowy
Дата 17.11.2006, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Конвертировать RTF в HTML: http://forum.vingrad.ru/index.php?showtopi...st&p=689085
Автор: Snowy
Примечание: код, который сейчас находится в DRKB, не только не рабочий, но и не имеет вообще никакого отношения ни к RTF, ни к HTML.
Но при этом гордо лежит именно под этим заголовком smile
P.S. Мой код отработан, проверен. Единственно, что хотелось бы добавить - подсветка гиперссылок.
Работаю над этим.


TRichEdit. Определить, используется ли в тексте форматирование, или же просто текст.
Код
function IsRichFormated(RE: TRichEdit): boolean;
var
  i: integer;
begin
  result := false;
  Re.SelStart := 0;
  Re.DefAttributes.Assign(Re.SelAttributes);
  for i := 0 to Length(Re.Text) do
  begin
    Re.SelStart := i;
    if (Re.SelAttributes.Name  <> Re.DefAttributes.Name) or
       (Re.SelAttributes.Color <> Re.DefAttributes.Color) or
       (Re.SelAttributes.Size  <> Re.DefAttributes.Size) or
       (fsBold in Re.SelAttributes.Style) or
       (fsItalic in Re.SelAttributes.Style) or
       (fsUnderline in Re.SelAttributes.Style) or
       (fsStrikeOut in Re.SelAttributes.Style) or
       (Re.Paragraph.Numbering <> nsNone) or
       (Re.Paragraph.Alignment <> taLeftJustify) then
     begin
       result := true;
       Break;
     end;
  end;
end;
Авторы: Snowy, Quadr0
PM MAIL   Вверх
Snowy
Дата 20.11.2006, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Готово. Переделал функцию.

Функция конвертирует RTF и обычный текст в HTML.
Производит детект урлов, выделяет их гиперссылкой.

Код

unit Rtf2Html;

interface

uses Windows, SysUtils, Classes, Graphics, ComCtrls, RichEdit, Forms;

function TextToHtml(s: string): string;
{* Конвертирует plain/text в html }

implementation

function TextToHtml(s: string): string;
const ot = #1'<'; ct = '>'#1;

  function HtmlColor(Col: integer): string;
  begin
    Col := ColorToRGB(Col);
    Result := '#' + Format('%.2x%.2x%.2x', [GetRValue(Col), GetGValue(Col), GetBValue(Col)]);
  end;

  function IsRTF(txt: string): boolean;
  begin
    if copy(txt,1,5) = '{\rtf' then result := true
    else result := false;
  end;

  function HtmlChar(ch: char): string;
  const
    sim: array[1..6] of string = ('&lt;', '&gt;','&quot;','&amp;', '<br>', '');
    sims = '<>"&'#13#10;
  begin
    if pos(ch, sims) > 0 then result := sim[pos(ch, sims)]
    else result := ch;
  end;

  function DetectUrl(txt: string): string;
  var
    i,j: integer;
    s,l: string;
    h:   boolean;
  begin
    result := ''; l := LowerCase(txt); h := false; i := 0;
    repeat
      inc(i);
      if txt[i] = #1 then h := not h;
      if h then result := result + txt[i]
      else
        if (copy(l, i, 7) = 'http://')
        or (copy(l, i, 8) = 'https://')
        or (copy(l, i, 6) = 'ftp://')
        or (copy(l, i, 4) = 'www.') then begin
          s := '';
          for j := i to Length(l) do
            if pos(l[j], #1#13#10' <>') = 0 then s := s + txt[j]
            else Break;
          inc(i, Length(s)-1);
          result := result + ot + 'a href="';
          if pos('://', s) = 0 then result := result + 'http://';
          result := result + s + '"' + ct + s + ot + '/a' + ct;
        end else result := result + txt[i];
    until i >= Length(l);
  end;

  function RtfToHtml(s: string): string;
  var
    re: TRichEdit;
    ss: TStringStream;
    f:  string;
    i, sz, cl: integer;
    st: TFontStyles;
    al: TAlignment;
    n:  TNumberingStyle;
    sp: boolean;
  begin
    result := '';
    re := TRichEdit.Create(nil);
    re.Visible := false; re.Width := 4096; re.Height := 0;
    re.Parent := Application.MainForm;
    ss := TStringStream.Create(s);
    re.Lines.LoadFromStream(ss);
    ss.Free; s := re.Text;
    f := ''; sz := 0; cl := -1; st := []; sp := false;
    al := taLeftJustify; n := nsNone;
    for i := 1 to Length(s) do
    begin
      re.SelStart := i;
      if (re.CaretPos.X=0) and (re.Lines[re.CaretPos.Y]='') then
        if s[i]=#13 then result:=result+ot+'br'+ct;
      if re.CaretPos.X = 1 then begin // Paragraph
        if re.Paragraph.Alignment <> al then begin
          if al <> taLeftJustify then result := result + ot+'/div'+ct;
          al := re.Paragraph.Alignment;
          if al = taRightJustify then result := result + ot+'div align=right'+ct;
          if al = taCenter then result := result + ot+'div align=center'+ct;
        end else if n = nsNone then result := result + ot+'br'+ct;
        if n = nsBullet then result := result+ot+'/li'+ct;
        if (re.Paragraph.Numbering = nsBullet) and (n = nsNone) then
        begin result := result + ot +'ul'+ct; n := nsBullet; end;
        if (re.Paragraph.Numbering <> nsBullet) and (n = nsBullet) then
        begin result := result + ot+'/ul'+ct; n := nsNone; end;
        if n = nsBullet then result := result + ot+'li'+ct;
      end;
      with re.SelAttributes do // Font
        if (f <> Name) or (sz <> Size) or (cl <> Color) or (st <> Style) then
        begin
          if sp then begin result := result + ot+'/span'+ct; sp := false; end;
          if s[i] > #31 then begin
            f := Name; sz := Size; cl := Color; st := Style;
            result := result + ot+'span style="{font-family:' + f + ';font-size:' +
            IntToStr(sz) + 'pt;';
            if cl <> 0 then result := result + 'color:' + HtmlColor(cl)+';';
            if fsBold in st then result := result + 'font-weight:bold;';
            if fsItalic in st then result := result + 'font-style:italic;';
            if fsUnderline in st then result := result + 'text-decoration:underline;';
            if fsStrikeOut in st then result := result + 'text-decoration:line-through;';
            result := result + '}"'+ct; sp := true;
          end;
        end;
      if s[i] > #31 then result := result + s[i];
    end;
    if sp then result := result + ot+'/span'+ct;
    if al <> taLeftJustify then result := result + ot+'/div'+ct;
    if n = nsBullet then result := result + ot+'/ul'+ct;
    re.Free;
  end;

var
  i: integer;
  h: boolean;
begin
  i := 0; result := ''; h := false;
  if IsRTF(s) then s := RtfToHtml(s)
  else result := '<font style="font-size:12pt; font-family:courier">';
  s := DetectUrl(s);
  repeat
    inc(i);
    if s[i] = #1 then h := not h
    else if h then result := result + s[i]
    else result := result + HtmlChar(s[i]);
  until i = Length(s);
end;

end.


Внимание! Функция конвертирует только содержимое.
Если вам нужен полноценный html-файл, нужно дописать заголовок.
Сама функция возвращает только содержимое BODY.

Пример использования:
Код

uses Rtf2Html;

procedure TForm1.Button1Click(Sender: TObject);
var
  sl: TStringList;
  ms: TMemoryStream;
begin
  sl := TStringList.Create;
  try
    //sl.LoadFromFile('1.txt'); // можно грузить rtf или txt
    sl.LoadFromFile('1.rtf');
    sl.Text := TextToHtml(sl.Text);
    //sl.SaveToFile('1.htm'); // можно сохранить результат в файл
    ms := TMemoryStream.Create;
    sl.SaveToStream(ms); ms.Position := 0;
    try // загрузка результата в TWebBrowser. Для краткости ему назначено имя wb
      wb.Navigate('about:blank'); // открываем пустую страницу
      while wb.ReadyState < READYSTATE_INTERACTIVE do
        Application.HandleMessage;
        // загружаем в неё наш html
        (wb.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms));
    finally
      ms.Free;
    end;
  finally
    sl.Free;
  end;
end;
(На форме TWebBrowser и кнопка).

Добавлено @ 17:35 
Код полностью мой до последней буковки.
Код новый, неотработанный.
Вроде работает, но оттестить было бы неплохо.
Прилагаю тестовый проект. Найдёте глюки - пишите.

Присоединённый файл ( Кол-во скачиваний: 17 )
Присоединённый файл  RtfToHtml.zip 19,58 Kb
PM MAIL   Вверх
Matematik
Дата 24.11.2006, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 17
Всего: 50



Вот нашел интересную статью
http://www.dtf.ru/articles/read.php?id=39888
Может будет полезна

Добавлено @ 20:12 
То, что вам никто не говорил о многозадачности в Windows
PM MAIL WWW ICQ   Вверх
Snowy
Дата 24.11.2006, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(Matematik @  24.11.2006,  20:11 Найти цитируемый пост)
Вот нашел интересную статью
Не думаю, что она имеет отношение к DRKB.
Да, есть несколько интересных практических советов.
Но в целом речь о тонкостях, а не о решениях.
В целом статья наводит на мысль, что человек съел собаку только сейчас и находится в шоке.
Хотя данная информация далеко не засекречена smile
Плюс полезным советам. Естественно я понимаю, что для очень многих эта информация может быть в новость.
В целом 4 за статью.
Но для сборника решений, ИМХО, не подходит.
Почитать полезно, но это не фак.
Полезно почитать тем, кто не сильно представляет реализацию многозадачности Windows, чтобы знать где лежат грабли.
Но далеко не факт, что придётся смотреть, чтоб на них не наступить.
Просто полезная информация. Но не по данной теме.
PM MAIL   Вверх
Bose
Дата 25.11.2006, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Не знаю, можно лои рекомендовать для DRKB чужие статьи smile 

Наткнулся в интернете на сайт Александра Просторова с довольно интересными статьями о Delphi http://www.softwarer.ru/ Я получил массу удовольствия читая их.
PM MAIL WWW Skype   Вверх
Albinos_x
Дата 5.12.2006, 02:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Цитата(Albinos_x @  9.11.2006,  01:55 Найти цитируемый пост)
Она возможно ещё подвергнется редактированию... но это только тогда, когда появится свободное время, аего в ближайшее время пока не предвидится...  

в документе 18 стр. 

Присоединённый файл ( Кол-во скачиваний: 2 ) 
  _________MS_Excel.zip 24,39 Kb

в статье найдена опечатка, в часности в разделе Организация работы приложения под несколько версий Excel
надо исправить 
Код

if (StrToInt(Copy(ExcelApplication1.Version[lcid],1,pos('.',ExcelApplication1.Version[lcid])-1)))=9 then    
   (ExcelWorkbook1 as Excel2000.ExcelWorkbook).SaveAs(s, EmptyParam, EmptyParam,
                             EmptyParam,  EmptyParam, EmptyParam, EmptyParam, EmptyParam, 
                             EmptyParam,  EmptyParam, EmptyParam,0)    
   else    
   (ExcelWorkbook1 as ExcelXP.ExcelWorkbook).SaveAs(s, EmptyParam, EmptyParam, 
                                      EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, 
                                      EmptyParam, EmptyParam, EmptyParam, EmptyParam,0);    


на 
Код

if (StrToInt(Copy(ExcelApplication1.Version[lcid],1,pos('.',ExcelApplication1.Version[lcid])-1)))=9 then    
   (ExcelWorkbook1 as Excel2000.TExcelWorkbook).SaveAs(s, EmptyParam, EmptyParam,
                             EmptyParam,  EmptyParam, EmptyParam, EmptyParam, EmptyParam, 
                             EmptyParam,  EmptyParam, EmptyParam,0)    
   else    
   (ExcelWorkbook1 as ExcelXP.TExcelWorkbook).SaveAs(s, EmptyParam, EmptyParam, 
                                      EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, 
                                      EmptyParam, EmptyParam, EmptyParam, EmptyParam,0);    



т.к. приведение производится не к тому типу... в результате могут возникнуть проблемы...


на всякий случай прикрепляю исправленную статью...

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  _________MS_Excel.zip 24,86 Kb


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1276 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.