Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2009, 14:23   #1
hydrogen
Пользователь
 
Регистрация: 27.10.2009
Сообщений: 19
По умолчанию Тип "Widestring"

Здравствуйте. В литературе написано: переменным типа Widestring и Longstring память выделяется динамически - во время работы программы, и длина таких строк практически не ограничена.
У меня программа копирует символы из файла А в строку [B]S[/B,] с типом Widestring, а из строки S в файл В. Файлы текстовые, в файле A 5768 символов, а переносится в B всего 754 символа (цифры могут быть не совсем точные +/-). Получается, что длина строки, с типом Widestring, ограничена?
Вот код программы:
Код:
procedure TForm1.Button1Click(Sender: TObject);
  var s:widestring;
  f,t:textfile;
begin
  assignfile(t,'c:\1.txt');
  reset(t);
  read(t,s);
  assignfile(f,'c:\100.txt');
  rewrite(f);
  write(f,s);
  closefile(t);
  closefile(f);
end;

Последний раз редактировалось hydrogen; 27.10.2009 в 14:27.
hydrogen вне форума Ответить с цитированием
Старый 27.10.2009, 14:25   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,863
По умолчанию

Можно код глянуть, что бы увидеть сочные цифры?
Arigato вне форума Ответить с цитированием
Старый 27.10.2009, 14:34   #3
goblinyara
Форумчанин
 
Аватар для goblinyara
 
Регистрация: 02.01.2009
Сообщений: 340
По умолчанию

а 755 символ, случайно, не знак возврата каретки? ведь read(t,s) читает из файла до символа возврата каретки(в просторечии Enter), и всё... покопайте в сторону EOF(f: file)/
DelphiWorld 6. Скачай, поставь, и будет тебе счастье=)
Программирование, как и любовь -- одно слово, за которым скрывается бесконечное множество занятий.
goblinyara вне форума Ответить с цитированием
Старый 27.10.2009, 14:37   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Совершенно верно.
Если исходный файл имеет разбивку на строки, то в переменную будет прочитана только первая строка.
mihali4 вне форума Ответить с цитированием
Старый 27.10.2009, 14:48   #5
hydrogen
Пользователь
 
Регистрация: 27.10.2009
Сообщений: 19
По умолчанию

Как можно прочитать весь файл в строку? Есть ли такой оператор или процедура?
hydrogen вне форума Ответить с цитированием
Старый 27.10.2009, 14:51   #6
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,863
По умолчанию

Самый простой способ (но не эффективный): читать файл посимвольно и добавлять символы в строку.
Arigato вне форума Ответить с цитированием
Старый 27.10.2009, 14:52   #7
goblinyara
Форумчанин
 
Аватар для goblinyara
 
Регистрация: 02.01.2009
Сообщений: 340
По умолчанию

хмм... насколько знаю, самому надо делать, стандартных функций не встречал... на первом курсе сам реализовывал подобное, и подсказку дал уже - копните в сторону EOF и EOLn
DelphiWorld 6. Скачай, поставь, и будет тебе счастье=)
Программирование, как и любовь -- одно слово, за которым скрывается бесконечное множество занятий.
goblinyara вне форума Ответить с цитированием
Старый 27.10.2009, 14:58   #8
hydrogen
Пользователь
 
Регистрация: 27.10.2009
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Самый простой способ (но не эффективный): читать файл посимвольно и добавлять символы в строку.
это как?

Цитата:
Function Eof[(var F: Text)]: Boolean;
(текстовые файлы)
Проверяет, является или нет текущая позиция файла концом файла.
Eof(F) возвращает True, если текущая позиция файла находится за последним символом файла или если файл пуст; иначе, Eof (F) возвращает False.
goblinyara как это мне может помочь?
hydrogen вне форума Ответить с цитированием
Старый 27.10.2009, 15:05   #9
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Например, вариант построчного чтения с добавлением:
Код:
  var s,s1:widestring;
  f,t:textfile;
begin
s:='';
  assignfile(t,'c:\1.txt');
  reset(t);
  while not eof(t) do
  begin
  readln(t,s1);
  s:=s+s1;
  end;
  assignfile(f,'c:\100.txt');
  rewrite(f);
  write(f,s);
  closefile(t);
  closefile(f);
end;
mihali4 вне форума Ответить с цитированием
Старый 27.10.2009, 15:07   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как можно прочитать весь файл в строку?
См. примеры в хелпе про функции BlockRead или открой файл в TFileStream и скопируй в TStringStream/
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
СТРУКТУРНЫЙ ТИП ДАННЫХ "МАССИВ" Urz-3 Помощь студентам 11 07.06.2009 14:40
Тип "Запись" в Паскале. 6.(интересно)!!! d00ker Помощь студентам 12 23.04.2009 20:32
настроить при открытии Excel 2003 в окошке "Тип файлов" вывод пункта "Все файлы (*.*)" по умолчанию? Unior Microsoft Office Excel 2 01.03.2009 02:42
В Access есть тип данных "Счетчик".Есть ли подобный тип данных в MS Sql Server 2000? An_ton SQL, базы данных 5 16.01.2009 17:55