|
Вопрос # 2 180/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Имеется на форме Edit1, Button1, OpenDialog1 для выбора файлов *.txt , *.csv Подскажите, пожалуйста, как организовать импорт данных с файла, чтобы значение строк присваивались Edit1.Text по маске '123456','234567','345678' и т.д.
 |
Вопрос задал: 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™ (статус: Доктор наук), 10 декабря 2008, 09:10 [#2]:
Что значит по маске? По какой-такой маске?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
antonio640 (статус: Посетитель), 10 декабря 2008, 21:01 [#3]:
Под маской я имел ввиду порядок присваивания групп где каждая группа в Edit1.Text разделена одинарными кавычками, как я указал в вопросе.
Данный порядок необходим для последующего запроса с базы данных Oracle
|
|
antonio640 (статус: Посетитель), 10 декабря 2008, 21:02 [#4]:
Спасибо! Вадим, но это не то что мне нужно
|
|
antonio640 (статус: Посетитель), 10 декабря 2008, 21:07 [#5]:
Если использовать имеющиеся компоненты EMS Advanced Import, SMImport, которые могут импортировать данные в Dataset.
Можно ли рещить мою задачу ?
|
|
Вадим К (статус: Академик), 11 декабря 2008, 12:42 [#6]:
to 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 (статус: Посетитель), 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™ (статус: Доктор наук), 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. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
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 (статус: Посетитель), 13 декабря 2008, 01:46 [#14]:
Не то что мне нужно
|
|
min@y™ (статус: Доктор наук), 13 декабря 2008, 10:47 [#15]:
Пардон, я ошибся.
Вместо S:= '''' + sl[Index] + '''' + ','; надо писать
S:= S + '''' + sl[Index] + '''' + ',';
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
antonio640 (статус: Посетитель), 13 декабря 2008, 13:04 [#16]:
Min@y пять баллов тебе!!
то что нужно
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|