Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 180

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
Имеется на форме Edit1, Button1, OpenDialog1 для выбора файлов *.txt , *.csv Подскажите, пожалуйста, как организовать импорт данных с файла, чтобы значение строк присваивались Edit1.Text по маске '123456','234567','345678' и т.д.

antonio640 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: antonio640 (статус: Посетитель)
Вопрос отправлен: 10 декабря 2008, 01:40
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 16; последнее сообщение — 13 декабря 2008, 13:04; участников в обсуждении: 3.
Вадим К

Вадим К (статус: Академик), 10 декабря 2008, 03:14 [#1]:

если правильно понял, то так
var sl:TStringlist;
begin
if not OpenDialog1.execute then exit;
sl := TStringList.create;
sl.loadfromfile(Opendialog1.filename);
Edit1.text := sl[1]; //вторая строка.
sl.free;
Или хочеться распарсить csv по полям? Но тогда их в один едит не запхаешь...
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 10 декабря 2008, 09:10 [#2]:

Что значит по маске? По какой-такой маске?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
antonio640

antonio640 (статус: Посетитель), 10 декабря 2008, 21:01 [#3]:

Под маской я имел ввиду порядок присваивания групп где каждая группа в Edit1.Text разделена одинарными кавычками, как я указал в вопросе.
Данный порядок необходим для последующего запроса с базы данных Oracle
antonio640

antonio640 (статус: Посетитель), 10 декабря 2008, 21:02 [#4]:

Спасибо! Вадим, но это не то что мне нужно
antonio640

antonio640 (статус: Посетитель), 10 декабря 2008, 21:07 [#5]:

Если использовать имеющиеся компоненты EMS Advanced Import, SMImport, которые могут импортировать данные в Dataset.
Можно ли рещить мою задачу ?
Вадим К

Вадим К (статус: Академик), 11 декабря 2008, 12:42 [#6]:

to antonio640
Попробуйте использовать обычные слова. А то что надо сделать, понятно только приблизительно. Очень приблизительно. Или хотя бы напишите исходные данные и результирующие.
Галочка "подтверждения прочтения" - вселенское зло.
antonio640

antonio640 (статус: Посетитель), 11 декабря 2008, 14:42 [#7]:

Добрый день! Вадим
Я пишу программу, которая через копоненту DOA подключается к базе данных Oracle.
Мне нужно в одной форме наладить импорт данных групп товара с файла *.txt либо с *.csv
12345678
23456789
34567890
21346587
таким образом, чтобы в Edit1.Text данные группы товара имели вид
'12345678','23456789','34567890','21346587'

После того как данные со знаками табуляции будут хранится в Edit1.Text
Я буду использовать их в своем запросе к базе данных.
Вадим К

Вадим К (статус: Академик), 11 декабря 2008, 14:52 [#8]:

Для вашего примера будет такой код
var sl:TstringList;
begin
if not OpenDialog1.execute then exit;
sl := TStringList.create;
sl.loadfromfile(Opendialog1.filename)
sl.quoteChar := '''';
sl.delimiter := ','
Edit1.text := sl.delimetertext;
sl.free;
Галочка "подтверждения прочтения" - вселенское зло.
antonio640

antonio640 (статус: Посетитель), 12 декабря 2008, 00:14 [#9]:

При использовании кода
var
sl:TstringList;
begin
if not OpenDialog1.execute then exit;
sl := TStringList.create;
sl.loadfromfile(Opendialog1.filename);
sl.QuoteChar := '''';
sl.delimiter := ',';
Edit1.Text := Sl.DelimitedText;
sl.Free;
end;

в результате имею
12345678,23456789,34567890,12345678
т.е. разделитель строк (') не присваивается
где можно более подробно почитать про TstringList
min@y™

min@y™ (статус: Доктор наук), 12 декабря 2008, 08:40 [#10]:

Цитата:


в результате имею
12345678,23456789,34567890,12345678
т.е. разделитель строк (') не присваивается


var
  sl: TstringList;
  Index: Integer;
  S: string;
begin
  if not OpenDialog1.execute()
    then exit;
 
  sl := TStringList.create;
  try
    try
      sl.loadfromfile(Opendialog1.filename);
      S:= '';
 
      for Index:= 0 to sl.Count - 1 do
        S:= '''' + sl[Index] + '''' + ',';
 
      Edit1.Text := Copy(S, 1, Length(S) - 1);
    except
      ShowMessage('Ошибка! Не могу загрузить файл ' + OpenDialog.FileName);
    end;
 
  finally
    sl.Free;
  end;
end;
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Вадим К

Вадим К (статус: Академик), 12 декабря 2008, 11:32 [#11]:

О TStringList можно почитать например здесь http://forum.vingrad.ru/articles/topic-208756.html. Исходники Classes.pas никто тоже не отменял.
Галочка "подтверждения прочтения" - вселенское зло.
antonio640

antonio640 (статус: Посетитель), 12 декабря 2008, 13:55 [#12]:

Спасибо!
Но этот код считывает только последнюю строчку :-(


var
sl: TstringList;
Index: Integer;
S: string;
begin
if not OpenDialog1.execute()
then exit;

sl := TStringList.create;
try
try
sl.loadfromfile(Opendialog1.filename);
S:= '';

for Index:= 0 to sl.Count - 1 do
S:= '''' + sl[Index] + '''' + ',';

Edit1.Text := Copy(S, 1, Length(S) - 1);
except
ShowMessage('Ошибка! Не могу загрузить файл ' + OpenDialog1.FileName);
end;

finally
sl.Free;
end;
end;


После выполнения этого кода Значению Edit1.Text присваивается '21346587' и все
А это последняя строка в списке групп файла *.txt
Вадим К

Вадим К (статус: Академик), 12 декабря 2008, 14:06 [#13]:

то есть последнюю строку?
Галочка "подтверждения прочтения" - вселенское зло.
antonio640

antonio640 (статус: Посетитель), 13 декабря 2008, 01:46 [#14]:

Не то что мне нужно :-(
min@y™

min@y™ (статус: Доктор наук), 13 декабря 2008, 10:47 [#15]:

Пардон, я ошибся.
Вместо S:= '''' + sl[Index] + '''' + ','; надо писать
S:= S + '''' + sl[Index] + '''' + ',';
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
antonio640

antonio640 (статус: Посетитель), 13 декабря 2008, 13:04 [#16]:

Min@y пять баллов тебе!!
то что нужно :-)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 12:01
Выполнено за 0.03 сек.