Форум: "Основная";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];
ВнизСчитывание табличных данных из файла. Найти похожие ветки
← →
Michael_X (2003-11-14 09:27) [0]Есть у меня куча файлов, в которых находится куча столбцов, причём расстояние между ними в пробелах не нормировано. Вопрос: каким макаром можно считать из них эти столбцы в том же порядке, как и в файле? Например, в Си есть оператор fscanf, а вот в Делфи как это можно организовать?
← →
MBo (2003-11-14 09:51) [1]Read(textfil,a,b,c...)
или
TStringList.CommaText
← →
Digitman (2003-11-14 09:57) [2]решение "в лоб" :
var
s: String;
Columns: TStringList;
...
//здесь читаем в переменную s очер.строку из файла
while Pos(s, " ") > 0 do //пока встречаются подряд следующие 2 пробела
s := StringReplace(s, " ", "", [rfReplaceAll]); // вырезать их
//теперь в строке осталось по одному пробелу между "словами"
s := StringReplace(s, " ", #10, [rfReplaceAll]); // меняем пробелы на символ LF
Columns.SetText(s); //остальное за нас сделает класс TStrings
//посмотрим, что получилось
for i:= 0 to Columns.Count - 1 do
ShowMessage(Columns[i]);
← →
Michael_X (2003-11-14 10:01) [3]Спасибо, парни. Сегодня попробую.
← →
Michael_X (2003-11-14 10:04) [4]Да...., а если знаки табуляции в перемешку тоже встречаются, т.е. где-то есть, где-то - нет.?
← →
Digitman (2003-11-14 10:13) [5]
> Michael_X
замени их на один пробел, потом - мой код
← →
Anatoly Podgoretsky (2003-11-14 10:19) [6]Все пробелы и табуляции заменить ОДНИМ пробелом, или сделать ручную разборку строки в переменные.
← →
Michael_X (2003-11-14 10:21) [7]Точно, ещё раз спасибо.
И ещё один вопросик: может в Делфи можно, как-нибудь работать напрямую с вордовскими файлами? Потому как для того чтобы работать с ними программно мне сейчас приходится ковертировать их сначала в txt.
← →
Digitman (2003-11-14 10:24) [8]пусть с "вордовскими файлами" работает сам Ворд - он лучше других знает, как работать со своими "родными" файлами
тебе останется лишь управлять Вордом - подавать ему нужные команды и получать результаты
← →
Michael_X (2003-11-14 10:30) [9]К сожалению не знаю, как это можно программно реализовать (передавать ворду команды, да и команды эти мне не известны). Буду очень признателен за ссылку или пояснения. За время общения родился ещё один вопрос: как осуществить форматированный вывод в файл? На Си это делается при помощи fprintf.
← →
Anatoly Podgoretsky (2003-11-14 10:37) [10]Michael_X © (14.11.03 10:30) [9]
Тебе прямая дорога на http://www.delphikingdom.com/lyceum/seminar.asp?partID=4
← →
Ломброзо (2003-11-14 10:40) [11]1) для разгребания вот такого вот барахла ничего лучше регулярных выражений не существует. Примерный код на Perl будет занимать три строки
while (<IN>) { # читать файл посторочно
@arr = split(/\s+/, $_); # разбить текущ. строку по одному и более пробелам, следущим подряд, в массив
}
2) fprintf eq
Write(FileHandle, Format("formatstring", [args]));
← →
Michael_X (2003-11-14 10:50) [12]2Anatoly Podgoretsky
Спасибо за ссылки. А с вордовскими файлами как быть?
← →
Michael_X (2003-11-14 10:50) [13]2Anatoly Podgoretsky
Спасибо за ссылку. А с вордовскими файлами как быть?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c