|
Модераторы: Poseidon, Snowy, bems, MetalFan |
|
Sazz |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 11.10.2012 Репутация: нет Всего: нет |
Доброго времени суток!!! Такая проблема, есть код который кодирует данные DataSet, всё работает нормально, вот только код работает для одной колонки, а хотелось бы сделать так чтобы действия применялись ко всем колонкам??? Дело в том что мы изначально не знаем сколько колонок будет, так как загружается необходимый файл в DBGrid, через TTable и DataSourse, как сделать чтобы код прошёлся по всем колонкам (заранее не известным)??? Помогите разобраться 4 день не могу решить проблему(((( Буду очень признателен за любую помощь!
Вот Код: var s : string; z: integer; DBGrid1.DataSource.DataSet.First; while not DBGrid1.DataSource.DataSet.Eof do Begin s := DBgrid1.DataSource.DataSet.Fields[z].AsString; DBgrid1.DataSource.DataSet.Edit; s:=update_win(s); DBgrid1.DataSource.DataSet.Fields[z].AsString:=s; DBGrid1.DataSource.DataSet.next; |
|||
|
||||
Данкинг |
|
|||
Yersinia pestis Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 9 Всего: 130 |
Добавлено через 50 секунд Кстати, .Edit вижу, а .Post - нет. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Sazz |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 11.10.2012 Репутация: нет Всего: нет |
Ошибка:
List index out of bounds (31) |
|||
|
||||
Данкинг |
|
|||
Yersinia pestis Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 9 Всего: 130 |
На какой строке ошибка? Код целиком покажи.
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Sazz |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 11.10.2012 Репутация: нет Всего: нет |
Ошибку выбивает сразу после нажатия
procedure TForm3.Button3Click(Sender: TObject); begin if Table1.TableName = '' then begin ShowMessage('Файл не загружен!') ; end; if Table1.TableName <> '' then begin z:=StrToInt(Edit1.Text); DBGrid1.DataSource.DataSet.First; for i:=0 to DBgrid1.DataSource.DataSet.FieldCount -1 do s := DBgrid1.DataSource.DataSet.Fields[i].AsString; while not DBGrid1.DataSource.DataSet.Eof do Begin for i:=0 to DBgrid1.DataSource.DataSet.FieldCount -1 do s := DBgrid1.DataSource.DataSet.Fields[i].AsString; DBgrid1.DataSource.DataSet.Edit; s:=update_dos(s); DBgrid1.DataSource.DataSet.Post; DBgrid1.DataSource.DataSet.Fields[i].AsString:=s; DBGrid1.DataSource.DataSet.next; end; end; end; А вот сама функция update_dos(s): function TForm3.update_dos(s: string): string; begin i:=1; c:=''; while i< length(s)+1 do begin l:=ord(s[i]); inc(i); if (l>=128) and (l<=192)then l:=l+64 else if (l>=224) and (l<240) then l:=l+16 else if l=241 then l:=184 else if l=240 then l:=168; dd:=chr(l); c:=c+dd; end; update_dos:=c; end; но с ней всё в порядке! Добавлено через 3 минуты и 4 секунды Извини с опечаткой скинул, вот: procedure TForm3.Button3Click(Sender: TObject); begin if Table1.TableName = '' then begin ShowMessage('Файл не загружен!') ; end; if Table1.TableName <> '' then begin z:=StrToInt(Edit1.Text); DBGrid1.DataSource.DataSet.First; while not DBGrid1.DataSource.DataSet.Eof do Begin for i:=0 to DBgrid1.DataSource.DataSet.FieldCount -1 do s := DBgrid1.DataSource.DataSet.Fields[i].AsString; DBgrid1.DataSource.DataSet.Edit; s:=update_dos(s); DBgrid1.DataSource.DataSet.Post; DBgrid1.DataSource.DataSet.Fields[i].AsString:=s; DBGrid1.DataSource.DataSet.next; end; end; end; |
|||
|
||||
superVad |
|
|||
Опытный Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 4 Всего: 15 |
Sazz, пожалуйста прочитай - ссылка.
|
|||
|
||||
Данкинг |
|
||||
Yersinia pestis Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 9 Всего: 130 |
Что-то не верится. Может быть, таблица не открыта? Добавлено через 1 минуту и 56 секунд И вообще эти строчки местами надо поменять, думается мне:
Добавлено через 3 минуты и 12 секунд И эти тоже:
-------------------- There's nothing left but silent epitaphs. |
||||
|
|||||
Sazz |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 11.10.2012 Репутация: нет Всего: нет |
Нет всё открыто! сейчас выдаёт
ту же ошибку но с другими параметрами: List index out of bounds (2), в загружаемой таблице тоже 2 колонки! procedure TForm3.Button3Click(Sender: TObject); begin if Table1.TableName = '' then begin ShowMessage('Файл не загружен!') ; end; if Table1.TableName <> '' then begin DBGrid1.DataSource.DataSet.First; while not DBGrid1.DataSource.DataSet.Eof do Begin for z:=0 to DBgrid1.DataSource.DataSet.FieldCount -1 do s := DBgrid1.DataSource.DataSet.Fields[z].AsString; DBgrid1.DataSource.DataSet.Edit; s:=update_dos(s); DBgrid1.DataSource.DataSet.Post; DBgrid1.DataSource.DataSet.Fields[z].AsString:=s; DBGrid1.DataSource.DataSet.next; end; end; Добавлено через 11 минут и 31 секунду Строки местами поменял, но ничего не поменялось. |
|||
|
||||
Данкинг |
|
|||
Yersinia pestis Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 9 Всего: 130 |
Да, про FieldName я и забыл:
Это сообщение отредактировал(а) Данкинг - 27.11.2012, 15:12 -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Sazz |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 11.10.2012 Репутация: нет Всего: нет |
[Error] Unit3.pas(97): Undeclared identifier: 'FieldByNumber'
|
|||
|
||||
Данкинг |
|
|||
Yersinia pestis Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 9 Всего: 130 |
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Sazz |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 11.10.2012 Репутация: нет Всего: нет |
---------------------------
Seconds --------------------------- Access violation at address 004C77C0 in module 'Seconds.exe'. Read of address 00000000. --------------------------- ОК --------------------------- |
|||
|
||||
Данкинг |
|
|||
Yersinia pestis Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 9 Всего: 130 |
Ну, "Access violation" - это уже точно не ко мне.
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
northener |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Читать внимательно Access Violation в деталях -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
Sazz |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 11.10.2012 Репутация: нет Всего: нет |
Спасибо!!!
|
|||
|
||||
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |