Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > SynUniHighlighter и SynEdit > Spell для SynEdit


Автор: GORI 15.11.2005, 15:39
Существует ли по возможности бесплатный компонент/библиотека для SynEdit которая посвечивает нужное (неправильное) слово красной чертой/плавающей по примеру Word...

Или просто метод посветки слова подчеркиванием smile


P.S Виталик, smile
smile

Спасибо

Автор: Vitalik 15.11.2005, 21:56
Уже в асе ответил, но напишу и здесь.

Есть такой замечательный компонент TSynSpellCheck.
Найти его можно здесь: http://www.realmind.us/sites/synspellcheck/ smile

Кстати, в этой темке можно обсудить проблемы его установки и использования smile

Автор: GORI 15.11.2005, 23:02
А пробем с ним кучаsmile Он устарели и "не подходит" для версии SynEdit

1. Первое это TPoint -> TBufferCoord;
2. Строка Result := Point(X,Y); //что-то типа того

ну и еще по мелочам smile


3. Сайт с которо качать загнулся. Надеюсь временно. Компонент взял из Syn Editor
....
Вот так smile

Автор: Gorcer 21.11.2005, 03:21
Здравствуйте. Хочу обсудить проблему его установки! Всё начилось с того что немогу нигде его найти, может кто выложет, помогите добрые люди, ну очень-очень надо.

Автор: GORI 22.11.2005, 19:04
У меня по-итогу получилось smile Я могу тебе либо прислать его на почту либо тут прикрепитьsmile

Автор: Gorcer 23.11.2005, 08:39
Оооо спасибо, установил.
А как вот оно работает?
Как указать базу слов? И можно ли использовать в качестве базы текстовый файл со списком?
А еще хотелось бы знать как он проверяет? после каждого слова или по команде сразу всё?

Автор: GORI 25.11.2005, 18:58
Ну...
Как раз так и работает smile Есть дириктория со словарями... Словари на офф сайте:

Цитата(Vitalik @ 15.11.2005, 20:56)
Найти его можно здесь: http://www.realmind.us/sites/synspellcheck/


Потом подключить к SynEdit

Автор: Gorcer 29.11.2005, 02:29
Компонента оказалась глючной, в ней есть процедура добавления слов в словарь, так вот она неправильно определяет место в массиве для нового слова!!!
Код

procedure TSynSpellCheck.AddDictWord(Word: string);
var
  AWordItem: PWordRec;
  pos:integer;

  { Return list position for insert new word }
  function GetInsertPos(const Word: string): Integer;
  var
    iI: Integer;
  begin
    Result := -1;
    // If not any words at all starting with this letter, we find next word
    if FCacheArray[Ord(Word[1])][1] = 0 then begin
      for iI := Ord(Word[1]) + 1 to 255 do
        if FCacheArray[iI][1] <> 0 then begin
          Result := FCacheArray[iI][0];
          Break;
        end;
    end else
      // Words with this letter exists, we find right pos
      for iI := FCacheArray[Ord(Word[1])][0] to Succ(FCacheArray[Ord(Word[1])][1]) do
        if PWordRec(FWordList.Items[iI])^.Word > Word then begin
          Result := iI;
          Break;
        end;
  end;

begin
  if Trim(Word) = '' then
    Exit;
  Word:=Trim(Word);  
  Word := AnsiLowerCase(Word);
  if FindWord(Word) = -1 then begin
    New(AWordItem);
    FMaxWordLength := Max(FMaxWordLength, Length(Word));
    AWordItem^.Word  := Word;
    AWordItem^.User  := True;
    AWordItem^.Value := ElfHash(Word);
    if FHashAlgorithm <> haDiff then begin
      if FHashAlgorithm = haSoundEx then
        AWordItem^.Hash := SoundEx(Word, FHashLength)
      else
        AWordItem^.Hash := MetaPhone(PChar(Word), FHashLength);
    end;
    // Quickest way is insert one word than add and than sort whole list
       pos:=GetInsertPos(Word);
       pos:=max(FWordList.Count-1,pos);  
          FWordList.Insert(pos, AWordItem);
  //WordList.Add(AWordItem);

    CalculateCacheArray; // Calculate cache array to speed up searches
    FModified := True;
    if Assigned(FOnAddWord) then
      FOnAddWord(Self, Word);
  end;
end;


Автор: GORI 30.11.2005, 01:17
Ну что она глючиная мы уже выяснили smile
Цитата(Gorcer @ 29.11.2005, 01:29)
Компонента оказалась глючной


Попробуй сторонние разработки. Например, качественно выполнен Aspell и в нем есть поддержка SynEdit... Только он чуть платный кажется. Но это не есть большая проблема smile Я когда-то находил. Могу еще раз, но это лучше в аськеsmile

Автор: GORI 30.11.2005, 01:29
Поправка smile не Aspell a Addict...

вот линк smile :
http://www.addictivesoftware.com/archives/a3list/msg00483.html smile

Автор: Vitalik 19.12.2005, 18:12
Вот что пишет Maël Hörz, автор UniSynEdit (версии SynEdit, поддерживающей Unicode):
Цитата(Ma)
I updated some months ago SynSpellChecker to work with the actual ANSI and
Unicode version of SynEdit.
Note however that this is totally unsupported!

Can be found here:
ANSI-version: http://mh-nexus.de/downloads/SynSpell.zip
Unicode-version: http://mh-nexus.de/downloads/UniSynSpell.zip

Cheers, Maël.

Т.о. это можно считать последней версией SynSpellCheck smile

Автор: Gorcer 20.12.2005, 03:12
Человек паук, я в тебя снова верю!........спасссибо....всё заработало!

Автор: Guest 23.12.2005, 22:47
Цитата
Человек паук

прикольно smile

Я в тебя тоже всегда верю, Виталик!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)