1

(7 відповідей, залишених у Pascal/Delphi)

Добрий день!
Я думав, що проблема в тому що в обидвох таблицях поле має однакову назву тому в першій таблиці перейменував поле Continent в ID_Continent та переробив запит

Прихований текст
procedure TfrEditCountry.selectTableCountry;
begin
  with adoQrCountry do
    begin
      SQL.Clear;//Очищаємо запит
      SQL.Add('SELECT MSCountry.ID, MSCountry.Country, MSCountry.CountryEnglish,'+
              ' MSContinent.Continent, MSCountry.CountryDisappeared, MSCountry.ID_Continent'+
              ' FROM MSCountry'+
              ' LEFT JOIN MSContinent ON MSCountry.ID_Continent=MSContinent.ID'+
              ' ORDER BY Country ASC');
              //Створюємо новий запит
      Active:=True;//Активуємо запит
    end;
end

;

Думав, що це виправить помилку, але на жаль не допомогло. Тут або я щось не так зробив, або в JOIN-ні цього непередбачено.

Але дякуючи пану Torbins, що підказав мені один із варіантів по якому я пішов, і все запрацювало.

Прихований текст
procedure TfrEditCountry.spBtAddDatabaseCountryClick(Sender: TObject);
var
  sErrorAddDatabase: string;
  sNameContinent: string;  
  sIDCountry: string;
  iIDContinent: integer;
begin
  if (edCountry.Text='') or (cmBxContinent.Text='') then
    begin
      sErrorAddDatabase:=edCountry.Hint+', '+cmBxContinent.Hint;
      ShowMessage(sErrorAddDatabase);
    end;
  sNameContinent:=QuotedStr(Trim(cmBxContinent.Text));
  with frEditContinent.adoQrContinent do
    begin
      SQL.Clear;//Очищаємо запит
      SQL.Add('SELECT MSContinent.ID, MSContinent.Continent'+
              ' FROM MSContinent'+
              ' WHERE MSContinent.Continent='+sNameContinent);
      Active:=True;//Активуємо запит
    end;
  iIDContinent:=frEditContinent.adoQrContinent.FieldByName('ID').AsInteger;
  if (edCountry.Text<>'') and (cmBxContinent.Text<>'') then
    begin
      with adoQrCountry do
        begin
          SQL.Clear;//Очищаємо запит
          SQL.Add('SELECT * FROM MSCountry ORDER BY MSCountry.ID ASC');
          Active:=True;//Активуємо запит
          Insert;//Додаємо рядок в таблицю
          FieldByName('Country').AsString:=Trim(edCountry.Text);//заповнюємо поле Країни в таблиці
          FieldByName('CountryEnglish').AsString:=Trim(edCountryEnglish.Text);//заповнюємо поле Країни(англійською)
          FieldByName('ID_Continent').AsInteger:=iIDContinent;//заповнюємо поле Континенти
          FieldByName('CountryDisappeared').AsBoolean:=ckBxCountryDisappeared.Checked;
          Post;//Зберігаємо дані
          Refresh;//Оновлюємо дані
        end;    
      adoQrCountry.Last;//Переходимо на останній(доданий)рядок
      sIDCountry:=IntToStr(adoQrCountry.FieldByName('ID').AsInteger);//Беремо ID
      selectTableCountry;//Виводимо запит з таблиці, заповнюємо BDGrig
      adoQrCountry.Locate('ID',sIDCountry, []);//Переходимо на доданий рядок
      clearAllTextComponent;//Очищаємо поля на формі
    end;
end;

Сподіваюся, що не сильно з кодом напартачив.
Але, якщо щось не так, то щиро буду вдячний за критику.

2

(7 відповідей, залишених у Pascal/Delphi)

Добрий вечір!
Мене знову занесло кудись не туди.
Щось в мене не виходить додавати в базу дані з допомогою TADOQuery

Роблю вибірку з БД так:

procedure TfrEditCountry.selectTableCountry;
begin
  with frEditBase.adoQrEdit do
    begin
      SQL.Clear;//Очищаємо запит
      SQL.Add('SELECT MSCountry.ID, MSCountry.Country, MSCountry.CountryEnglish,'+
              ' MSContinent.Continent, MSCountry.CountryDisappeared'+
              ' FROM MSCountry'+
              ' LEFT JOIN MSContinent ON MSCountry.Continent=MSContinent.ID'+
              ' ORDER BY Country ASC');
              //Створюємо новий запит
      Active:=True;//Активуємо запит 
    end;
end;

Тут все чудово.

А щоби додати дані в БД я написав так:

procedure TfrEditCountry.spBtAddDatabaseCountryClick(Sender: TObject);
begin
  if (edCountry.Text<>'') or (cmBxContinent.Text<>'') then
    begin
      with frEditBase.adoQrEdit do
        begin
          Insert;//Створюємо новий рядок в таблиці
          FieldByName('Country').AsString:=Trim(edCountry.Text);//заповнюємо поле Країни в таблиці
          FieldByName('CountryEnglish').AsString:=Trim(edCountryEnglish.Text);//заповнюємо поле Країни(англійською)
          FieldByName('Continent').AsString:=Trim(cmBxContinent.Text);//заповнюємо поле Континенти
          FieldByName('CountryDisappeared').AsBoolean:=ckBxCountryDisappeared.Checked;
          Post;//Зберігаємо дані
          Refresh;//Оновлюємо дані
        end;
    end;
  clearAllTextComponent;//Очищаємо поля на формі
end;

додаток компілюється, але при роботі в самому додатку
ShowMessage виводить помилку "Недостатньо відомостей ключового поля для оновлення",
та при цьому дані заносяться аж в обидві таблиці
хоча в таблицю MSContinent(континенти) я не планував заносити дані.
Допоможіть виявити мою помилку буду щиро вдячний.

3

(7 відповідей, залишених у Pascal/Delphi)

frz написав:
чат
безкоштовна версія
ґпт написав:

... Проблема, швидше за все, полягає у зв'язку полів

Дякую за допомогу. Так і було як ви сказали - невідповідність назв. Вже виправив.

frz написав:
чат
безкоштовна версія
ґпт написав:

...  код виглядає майже правильно

Дякую за зауваження код переробив вийшло приблизно так.



procedure TfrMain.SelectTableAMSMain;
begin
  adoQrMain.SQL.Clear;
  adoQrMain.SQL.Add('SELECT '+
    'AMSMain.ID,                   AMSMain.Title,               MSContinent.Continent, '+
    'AMSMain.IHave,                AMSMain.Desirable,           AMSMain.CountryDisappeared, '+
    'MSCountry.Country,            MSPeriod.Period,             AMSMain.Subject, '+
....

    'FROM ((((( ((((( ((((( ((AMSMain  '+
    'LEFT JOIN MSContinent ON AMSMain.Continent=MSContinent.ID) '+
    'LEFT JOIN MSCountry ON AMSMain.Country=MSCountry.ID) '+
    'LEFT JOIN MSPeriod ON AMSMain.Period=MSPeriod.ID) '+
    'LEFT JOIN MSSeries ON AMSMain.Series=MSSeries.ID) '+
    'LEFT JOIN MSRuler ON AMSMain.Ruler=MSRuler.ID) '+
.....

    'LEFT JOIN MSMetal ON AMSMain.Metal=MSMetal.ID) '+
    'LEFT JOIN MSSample ON AMSMain.Sample=MSSample.ID '+
    'ORDER BY AMSMain.Title ASC ');
  adoQrMain.Active:=True;
end;
Torbins написав:

Cкоріше за все проблема з об'єднанням таблиць, спробуйте переробити запит з використанням JOIN.

  try
  //...
  except
  on e:Exception do
  end;

Не робіть так. Якщо у програмі є помилка, то її треба виправляти, а не ігнорувати.

Дякую JOIN для мого задуму підходить краще.
Бо мені потрібно було з лівої таблиці вивести всі рядки, а WHERE викидав які були незаповнені і це виявилося проблемою при об'єднанні декількох таблиць.

try постараюся більше його не використовувати.

4

(7 відповідей, залишених у Pascal/Delphi)

type
  TfrMain = class(TForm)
    edMainID: TEdit;
    edTitle: TEdit;
    edContinent: TEdit;
    edCountry: TEdit;
    dbGrMain: TDBGrid;
    adoQrMain: TADOQuery;

...

Виконую запит на вибірку даних

    adoQrMain.SQL.Clear;
    adoQrMain.SQL.Add('SELECT AMSMain.ID, AMSMain.Title, MSContinent.Continent, MSCountry.Country '+
    'FROM AMSMain, MSContinent, MSCountry '+
    'WHERE AMSMain.Continent=MSContinent.ID AND AMSMain.Country=MSCountry.ID' );
    adoQrMain.Active:=True;

тут все чудово


далі виводжу дані на форму і тут щось не так, бо перші два Edit-ти - добре, а другі не працюють

procedure TfrMain.dbGrMainCellClick(Column: TColumn);
begin
  try
    edMainID.Text:=IntToStr(adoQrMain.FieldByName('ID').AsInteger);
    edTitle.Text:=adoQrMain.FieldByName('Title').AsString;
    edContinent.Text:=adoQrMain.FieldByName('Continent').AsString;
    edCountry.Text:=adoQrMain.FieldByName('Country').AsString;
  except
  on e:Exception do
  end;
end;

Підкажіть будь-ласка де я зробив помилку, буду щиро вдячний.

5

(5 відповідей, залишених у Pascal/Delphi)

Torbins написав:

Підтримаю koala, викиньте усю взаємодію із візуальними елементами із циклу. Якось так:

Щиро дякую за допомогу. Переробив зараз набагато краще працює

6

(5 відповідей, залишених у Pascal/Delphi)

Поле mmCode знаходиться праворуч два інші поля Memo знаходяться ліворуч(одне з яких приховане, за потреби я їх перемикаю)
Тут скріншот
Призначення додатку: виправлення текстового шару електронних книг графічних форматів(Djvu)
Бувають електронні книги коли при копіюванні тексту замість тексту виходять каракулі
Докладніше в темі на форумі

В праве поле я завантажую текстовий шар(з електронної книги), а в ліве(mmCode)завантажую коди для перекодування тексту

Текст в полі mmCode виглядає так

А\320\220=\303\200
а\320\260=\303\240
БІ\320\221\320\206=\303\2012
Бі\320\221\321\226=\303\2013
бі\320\261\321\226=\303\2413
Б\320\221=\303\201
б\320\261=\303\241
ВІ\320\222\320\206=\303\2022
Ві\320\222\321\226=\303\2023
ві\320\262\321\226=\303\2423
В\320\222=\303\202
в\320\262=\303\242
ГІ\320\223\320\206=\303\2032

Задум в мене такий:
1-В процесі for вибираю з поля mmCode вибираю першу строку(А\320\220=\303\200)
2-далі ділю її на три частини
А-буква
\320\220-правильний код букви
\303\200-не правильний код букви
3-щоби в полі mmText(Memo) замінити всі не правильний код букви на правильним кодом букви
4-А для контролю і візуального перегляду результату у полі mmTextVisible(Memo) заміную всі не правильний код букви на саму букву(в даному випадку А)
5-Далі йде другий цикл витягується другий рядок (а\320\260=\303\240)

koala написав:

Поясніть, будь ласка, нащо ви в циклі виділяєте текст у mmCode?

Щоби бачити процес(хід) роботи

koala написав:

Те саме стосується і присвоювання TMemo.Lines, зокрема TMemo.Lines.Text. Якщо хочете щось зробити - зробіть його всередині коду, а потім присвоюйте, не робіть це в циклі обробки.

Ви маєте на увазі це:

mmText.Lines.Text:=StringReplace(mmText.Lines.Text,sKodeFalse,sKodeTrue,[RFREPLACEALL]);//Замінюємо частини
koala написав:

але все ж бажано більше літер витрачати на суть. Скажімо, iNumLetterS - ви скоротили "slash" до "s"

Я спочатку змінним дав такі назви:
iNumLetterReverseSolidus:integer;
iNumLetterEqualsSign:integer;
а потім скоротив, та бачу що не варто було скорочувати, дякую за пораду

7

(11 відповідей, залишених у Інше)

Я той Pdf сконвертував у Djvu, з якого витягнув текстовий шар(у текстовий документ)
Переглянувши цей текстовий шар виявив послідовність, почав міняти шифровані частини тексту на нормальні.
Закину виправлений текстовий шар у Djvu, скопіював виходить нормально.
Почав писати додаток для виправлення тексту на Delphi, та застряг тому прошу вашої допомоги.
Нище  даю посилання на цю тему
Обговорення та код є тут

8

(5 відповідей, залишених у Pascal/Delphi)

У мене виникли питання із заміною тексту в Memo
Задумом такий:- у додатку з три поля  Memo. З першого поля Memo копіюю рядки у змінну, ділю її на три частини, а тими частинами заміняю текст у двох інших полях Memo.

Проблема в тому що додаток дуже тормозить і підвисає, хоча той результат що я задумав - видає.
Підкажіть що в коді не так, буду щиро вдячний

procedure TMainForm.sbtDecodeTextClick(Sender: TObject);
//mm-це приставка до компонентів Memo
//ed-це приставка до компонентів Edit
var
  iCopyLines:integer;//Порядковий номер рядка в мемо
  iSizeLines:integer;//Кількість символів у рядку
  iNumLetterS:integer;//Порядковий номер символу "\" у рядку
  iNumLetterES:integer;//Порядковий номер символу "=" у рядку
  sLines:String;//Скопійований рядок з мемо1
  sLetter:String;//Частина рядка до знаку "\"
  sKodeTrue:String;//Частина рядка між знаками "\" та "="
  sKodeFalse: String;//Частина рядка після знаку "="
begin
//---  Тут ми зозбиваємо строку з Memo1 на три частини  ---
//----------------------------------------------------------
  for iCopyLines:=0 to mmCode.Lines.Count-1 do
    begin
      sLines:=mmCode.Lines[iCopyLines];//копіюємо строку у змінну з Memo1
      with mmCode do//виділяємо текст(цілий рядок) у Memo1
        begin
          SetFocus();
          SelStart:=Pos(sLines,mmCode.Lines.Text)-1;
          SelLength:=Length(sLines);
        end;
      iSizeLines:=Length(sLines);//знаходимо кількість символів строки
      iNumLetterS:=Pos('\',sLines);//дізнаємося порядковий номер символу "\"
      iNumLetterES:=Pos('=',sLines);//дізнаємося порядковий номер символу "="
      sLetter:=Copy(sLines,1,iNumLetterS-1);//копіюємо частину рядка до знаку "\"
      edLetter.Text:=sLetter;//записуємо у поле Edit1
      sKodeTrue:=Copy(sLines,iNumLetterS,iNumLetterES-iNumLetterS);//копіюємо частину рядка між знаками ("\"-1)та "="
      edKodeTrue.Text:=sKodeTrue;//записуємо у поле Edit2
      sKodeFalse:=Copy(sLines,iNumLetterES+1,iSizeLines-iNumLetterES);//копіюємо частину рядка після знаку "="
      edKodeFalse.Text:=sKodeFalse;//записуємо у поле Edit3
//--- Тут ми замінюємо частини тексту у полях Memo2 та Memo3 ---
//-----------------------------------------------------------
      if Pos(sKodeFalse,mmText.Lines.Text)<>0 then//Якщо є такий фрагмент тексту то замінюємо його
        begin            {
          with mmText do
            begin
              SetFocus();
              SelStart:=Pos(sKodeFalse,mmText.Lines.Text)-1;
              SelLength:=Length(sKodeFalse);
            end;  }
          mmText.Lines.Text:=StringReplace(mmText.Lines.Text,sKodeFalse,sKodeTrue,[RFREPLACEALL]);//Замінюємо частини тексту у Memo2
          mmTextVisible.Lines.Text:=StringReplace(mmTextVisible.Lines.Text,sKodeFalse,sLetter,[RFREPLACEALL]);//Замінюємо частини тексту у Memo3
        end
          else
        begin
          if Pos(sKodeTrue,mmTextVisible.Lines.Text)<>0 then //Якщо є такий фрагмент тексту то замінюємо його
            begin
              mmTextVisible.Lines.Text:=StringReplace(mmTextVisible.Lines.Text,sKodeTrue,sLetter,[RFREPLACEALL]);//Замінюємо частини тексту у Memo3
            end;
        end;
    end;  
  ShowMessage('Завершено');
end;

9

(11 відповідей, залишених у Інше)

koala написав:

А тут - беріть розпізнавач.

Ви маєте на увазі, що потрібно розпізнати текст по новому?? — чи щось інше

10

(11 відповідей, залишених у Інше)

putinovich написав:

Справа не в шрифтах, автор заборонив копiювати текст.

Дозволи всі є, скріншот додаю:

https://replace.org.ua/misc.php?action=pun_attachment&amp;item=2067

11

(11 відповідей, залишених у Інше)

Я не сподівався що так швидко відгукнетесь. Дякую.

Droid 77 написав:

Якщо використовуєте PDF-XChange Viewer, зробіть наступне:

  • Виділіть текст за допомогою інструмента виділення тексту

  • Натисніть праву кнопку миші

  • В меню оберіть «Властивості тексту»

  • Виберіть «Форматування», в лівому вікні

  • Біля обраного тексту є плюсик, в правому вікні

  • Натискаєте на той плюсик, і отримуєте всю інформацію відносно типу шрифта

Даною програмою користуюся. Тут можна переглянути параметри шрифту але змінити їх неможливо

leofun01 написав:

Копіювати текст з *.pdf в буфер обміну можна тільки у випадках, коли автор серед параметрів зберігання вказав, що дає дозвіл на копіювання в буфер, і не застосував перемішування / фрагментацію.

Переглянув властивості документу все нормально

Прихований текст

Метод шифрування: Без захисту(Немає)
Права доступу до документа — всі дозволені

P.Y. написав:

Коли зіткнувся був зі схожою проблемою, вирішив її в лоб: конвертував pdf у зображення сторінок і прогнав їх через розпізнавач тексту (в моєму випадку, це був tesseract-OCR, але підійде й будь-який інший з підтримкою української мови). Недоліком такого підходу стало те, що куцохвосте Щ (властиве Times New Roman та іншим сучасним шрифтам) при розпізнаванні перетворилось на Ш — це шокання довелося виправляти власноруч, що я так і не зміг зробити в повній мірі.

За tesseract-OCR не чув. Для розпізнання тексту користуюсь ABBYY FineReader. Маю ще PDF-XChange Viewer Pro де можна розпізнавати текст в самому Pdf-і, та її не використовую тому що немає можливості зробити перевірку тексту як у FineReader-і.
Також думав по новому розпізнати текст: - Та стримує те, що Pdf видавничий(макет по якому створювалася паперова книга), а мені не конче хочеться змінювати всі форматування оригіналу

12

(11 відповідей, залишених у Інше)

В мене є електронна книга у форматі Pdf

При копіюванні тексту отримую ось це:

Прихований текст

ˇ??‡??Ł? ?‡? Æ??æ???? ” ‡ ??ŒŁØ ??Ø: 1 ??Ø?? º??Œ? ?Æ??? ??ºŁ????? 挺??-
Œ?? ?Œ????, ??æ?????? ?????ª?? 15 ı?ŁºŁ? ‡ ????? ? ????? ?? ?‡?.
—????? „ 11
˚?‡?ŒŁ Œ?º????ºŁ ? 10,0 ª.
????? ª‡???Œ? ??‡¿??ª? ? 5,0 ª.
˚??Ł?? ??غ??æ?Œ? ? 10,0 ª.
˚??‡?? ‡?ÆŁ?? ???????ª? ? 5,0 ª.

Скоріше за все у мене не встановлені шрифти які використані у цьому Pdf-і

Підкажіть програму, якою можна замінити властивості шрифтів у Pdf-і

13

(11 відповідей, залишених у Pascal/Delphi)

Пане Torbins щиро вам дякую за допомогу, бо я ніяк не міг допетрати в чому проблема, а з вашою допомогою сортування за працювало.

Сортування
procedure TSortForm.BtSaveClick(Sender: TObject);
var
  SParamSort, SNameColumns: String;
  INumColumns: Integer;
begin
  If RBtSortUpDown.Checked then
    begin
      SParamSort:=' ASC'
    end;
  If RBtSortDownUp.Checked then
    begin
      SParamSort:=' DESC'
    end;
  INumColumns:=CBxLictColumns.ItemIndex;
  SNameColumns:=MainForm.GrLang.DataSource.DataSet.Fields[INumColumns].FieldName;
  (MainForm.GrLang.DataSource.DataSet as TADOTable).IndexFieldNames:=SNameColumns+SParamSort;
  SortForm.Close;
end;

У мене вибірка даних, додавання, редагування та пошук працювало добре, а от сортування ніяк не хотіло йти.

Вибірка даних
procedure TMainForm.GrLangCellClick(Column: TColumn);
begin
  EdID.Clear;
  EdID.Text:=IntToStr(GrLang.DataSource.DataSet.FieldByName('ID').AsInteger);
  EdLangForeign.Clear;
  EdLangForeign.Text:=GrLang.DataSource.DataSet.FieldByName('Foreign').AsString;
  EdLangUa.Clear;
  EdLangUa.Text:=GrLang.DataSource.DataSet.FieldByName('Ukrainian').AsString;
  MmNote.Clear;
  MmNote.Text:=GrLang.DataSource.DataSet.FieldByName('Note').AsString;   
end;
Додавання та редагування
procedure TFormRider.SaveBtClick(Sender: TObject);
begin 
  if EdID.Text<>'' then
    begin
      MainForm.GrLang.DataSource.DataSet.Edit;
    end
  else
    begin
      MainForm.GrLang.DataSource.DataSet.Insert;
    end;
  MainForm.GrLang.DataSource.DataSet.FieldByName('Foreign').AsString:=EdLangForeign.Text;
  MainForm.GrLang.DataSource.DataSet.FieldByName('Ukrainian').AsString:=EdLangUa.Text;
  MainForm.GrLang.DataSource.DataSet.FieldByName('Note').AsString:=MmNote.Text;
  FormRider.Close;
end;
Пошук
procedure TFormFind.BtSaveClick(Sender: TObject);
var
  STextFind, SNameColumns: String;
  INumColumns: Integer;
begin
  INumColumns:=CBxLictColumns.ItemIndex;
  SNameColumns:=MainForm.GrLang.DataSource.DataSet.Fields[INumColumns].FieldName;
  If EdTextFind.Text<>'' then
    begin
      STextFind:=EdTextFind.Text;
      MainForm.GrLang.DataSource.DataSet.Locate(SNameColumns,STextFind,[]);
      FormFind.Close;
    end
  else
    begin
      ShowMessage('Заповніть поле');
    end;
end;

Дякуючи вам також запрацювало сортування DBGrid>TitleClick та є проблема з полем Memo

Сортування
procedure TMainForm.GrLangTitleClick(Column: TColumn);
Var
  SParamSort:string;
begin
  if GrLang.DataSource.DataSet.FieldByName(Column.FieldName).Tag=0 then
   begin
    SParamSort:=' ASC';
    GrLang.DataSource.DataSet.FieldByName(Column.FieldName).Tag := 1;
   end
  else
   begin
    SParamSort:=' DESC';
    GrLang.DataSource.DataSet.FieldByName(Column.FieldName).Tag := 0;
   end;
  (GrLang.DataSource.DataSet as TADOTable).Sort:=Column.FieldName+SParamSort;
end;

Ще раз дякую за допомогу. Коли все працює можна трішки розслабитися.
За ваше здоров'я  *DRINK*

14

(11 відповідей, залишених у Pascal/Delphi)

Пробував двома варіантами сортувати але обидва щось непрацюють.
Першим пробував через DBGrid>TitleClick

procedure TMainForm.LangGrTitleClick(Column: TColumn);
Var
  f:string;
begin
  if DBGrid.DataSource.DataSet.FieldByName(Column.FieldName).Tag=0 then
   begin
    f :=' ASC';
    DBGrid1.DataSource.DataSet.FieldByName(Column.FieldName).Tag := 1;
   end
  else
   begin
    f :=' DESC';
    DBGrid1.DataSource.DataSet.FieldByName(Column.FieldName).Tag := 0;
   end;
 DBGrid1.DataSource.DataSet.Sort:=Column.FieldName + f;
end;

Помилка виходить тут(виділена червоним) DBGrid1.DataSource.DataSet.Sort:=Column.FieldName + f;

Другий варіант у мене такий:

procedure TSortForm.SaveBtClick(Sender: TObject);
var
  ParamSort: String;
begin
  If RadioButton1.Checked then
    begin
      ParamSort:=' ASC'
    end;
  If RadioButton2.Checked then
    begin
      ParamSort:=' DESC'
    end; 
  If ComboBox1.ItemIndex=0 then
    begin
      MainForm.DBGrid1.DataSource.DataSet.IndexFieldNames:='ID'+ParamSort;
    end;   
  If ComboBox1.ItemIndex=1 then
    begin
      MainForm.DBGrid1.DataSource.DataSet.IndexFieldNames:='Foreign'+ParamSort;
    end;
  If ComboBox1.ItemIndex=2 then
    begin
      MainForm.DBGrid1.DataSource.DataSet.IndexFieldNames:='Ukrainian'+ParamSort;
    end;
end;

У другому варіанті помилку вибиває тут:-"IndexFieldNames"

Хоча якщо другий варіант спростити так як нище то працює відмінно.

procedure TSortForm.SaveBtClick(Sender: TObject);
var
  ParamSort: String;
begin
  If RadioButton1.Checked then
    begin
      ParamSort:=' ASC'
    end;
  If RadioButton2.Checked then
    begin
      ParamSort:=' DESC'
    end; 
  If ComboBox1.ItemIndex=0 then
    begin
      RiderForm.ADOTable1.IndexFieldNames:='ID'+ParamSort;
    end;   
  If ComboBox1.ItemIndex=1 then
    begin
      RiderForm.ADOTable1.IndexFieldNames:='Foreign'+ParamSort;
    end;
  If ComboBox1.ItemIndex=2 then
    begin
      RiderForm.ADOTable1.IndexFieldNames:='Ukrainian'+ParamSort;
    end;
end;

Може хтось підкаже в чому моя помилка буду дуже вдячний.

15

(5 відповідей, залишених у Pascal/Delphi)

koala написав:

Ви можете самі подивитися: http://docs.embarcadero.com/products/ra … Table.html

Дякую використав ASC/DESC на простім прикладі запрацювало але виникла проблема в іншому
Буду продовжувати в цій темі:-(https://replace.org.ua/topic/7173/) так як вона актуальніша для даного питання.

16

(5 відповідей, залишених у Pascal/Delphi)

Підкажіть чи у таблиці ADOTable є властивість для зміни порядку сортування А-Я; Я-А

Підкажіть будь-ласка програму для створення локальних баз даних MySql або Oracle на комп'ютері, бажано безкоштовну та з українським інтерфейсом

18

(6 відповідей, залишених у Java)

fed_lviv написав:

new Dimension(widht:500, height:500))
Ну, якщо Ви реально таке написали, а не IDEA відображає параметри, то дійсно помилка :)

new Dimension(500, 500)

P.S. myApp - бажано з великої літери

Пробував без widht та height, як ви порадили:

panel.setPreferredSize(new Dimension(500, 500));

Та також вибиває помилку


У мене на компі є відео уроки по Java на Екліпсі у відео є саме так:

panel.setPreferredSize(new Dimension(widht:500, height:500));

також показано що цей код компілюється і запускається. Я навіть зробив скріншот.

Ось скріншот з відео, (за посиланням):
http://replace.org.ua/misc.php?action=p … =5504t9747

Правда я пробую в текстовому редакторі, а не в екліпсі можливо це через текстовий???

19

(6 відповідей, залишених у Java)

Доброго вечора.

При встановлені розмірів панелі в даній частині коду є помилка:

panel.setPreferredSize(new Dimension(widht:500, height:500));

Не можу збагнути де, може хтось підкаже де саме.


Тут весь код(помилка у 20-му рядку):

import javax.swing.*;
import jawa.awt.*;

public class myApp extends JFrame{
    private JPanel panel;
    private final int COLS=15; //Створюємо константу.
    private final int ROWS=1;
    private final int IMG_SIZE=50;

    public static void main (String[] srgs){
        new myApp();
    }
    private myApp(){
        myPanel();
        myFrame();
    }
    private void myPanel(){
        panel=new JPanel(); // Створюємо нову панель.
        //panel.setSize(500, 500); //
        panel.setPreferredSize(new Dimension(widht:500, height:500)); // Задаємо розміри панелі.
        //panel.setPreferredSize(new Dimension(widht:COLS*IMG_SIZE, height:ROWS_IMG_SIZE)); // 
        add(panel); // Додаємо панель на форму.
    }
    private void myFrame(){//Toll completed with exit code
        pack();
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); // Щоби програма закрилася.
        setTitle("Сапер"); // Вставновлюємо назву(заголовок).
        setLocationRelativeTo(null); // Розміщуємо по центру
        setResizable(false); // Щоби розмір вікна не змінювався.
        setVisible(true);// Щоби відображалася програма
    }
}

20

(24 відповідей, залишених у Комп'ютерні мережі)

Kizyak написав:

Gnu/Linux уже як більше 25 років, а його ще до сих пір не закидали вірусами.

Можливо ви їх не бачите:

Ось список відомих вірусів для Linux:

Троянські коні

  • Kaiten — троян Linux.Backdoor.Kaiten
    Rexob — троян Linux.Backdoor.Rexob

Хробаки:

  • Adm — Net-Worm.Linux.Adm
    Adore
    Cheese — Net-Worm.Linux.Cheese
    Devnull[en]
    Kork
    Linux/Lion (також відомий як Ramen)
    Mighty — Net-Worm.Linux.Mighty
    Millen — Linux.Millen.Worm
    Ramen
    Slapper
    SSH Bruteforce

Комп'ютерні віруси:

  • Alaeda — Virus.Linux.Alaeda
    Поганий кролик — Perl.Badbunny
    Binom — Linux/Binom
    Bliss[en]
    Brundle
    Bukowski
    Diesel — Virus.Linux.Diesel.962
    Kagob a — Virus.Linux.Kagob.a
    Kagob b — Virus.Linux.Kagob.b
    MetaPHOR (також відомий як Simile)
    Nuxbee — Virus.Linux.Nuxbee.1403
    OSF.8759
    Podloso — Linux.Podloso (The iPod virus)
    Rike — Virus.Linux.Rike.1627
    RST — Virus.Linux.RST.a
    Satyr — Virus.Linux.Satyr.a
    Staog
    Vit — Virus.Linux.Vit.4096
    Winter — Virus.Linux.Winter.341
    Winux (також відомий як Lindose або PEElf)
    ZipWorm — Virus.Linux.ZipWorm