Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Vladimir1988
0 / 0 / 1
Регистрация: 20.11.2009
Сообщений: 18
#1

При считывании из файла (через Thread) в массив пишутся другие данные - Delphi

08.02.2010, 22:40. Просмотров 333. Ответов 1
Метки нет (Все метки)

Подскажите плиз, не могу понять, где ошибка. при считывании из файла в массив через поток, пишутся не те числа, что в текстовом файле.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
procedure TForm1.LoadButton1Click(Sender: TObject);
 var
 LS, LE, i:integer;
  k: array[1..MaxElements] of integer;
  p2:TStream;
  f:array[1..10] of string;
  W: string;
    begin
    p2:= TFileStream.Create('D:\тест\file34.txt', fmopenread);
     try
     p2.Read(PChar(W)^, p2.size);
     LS := 1;
     LE := Pos(#13#10, W);
       for i := 1 to MaxElements do
      while(LE> 0) do begin
       f[i] := Copy(W, LS, LE - LS);
       delete (W,LS, Length(W)+1);
       k[i]:=StrToInt(f[i]);
      end;
               for i := 1 to MaxElements do
        StringGrid2.Cells[1, I] := IntToStr(k[i]);
      finally
     p2.Free;
     end;
  end;
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2010, 22:40
Я подобрал для вас темы с готовыми решениями и ответами на вопрос При считывании из файла (через Thread) в массив пишутся другие данные (Delphi):

Ошибка при считывании из файла
При считывании файла (есть в архиве, outfile.txt) в 1 строке StringGrid'a...

Преобразовать типы данных при считывании с ini файла
Считываю значение с ini файла и присваиваю переменной...

При считывании данных из таблицы, данные становятся пустыми
Проблема в том что когда я записываю новый элемент таблицы проблем не возникает...

Ошибка при считывании через scanf
Помогите, пожалуйста, разобрать, где допустил ошибки. После ввода x выдает...

При считывании текста из файла, при нахождении пробела или enter ставится пробел
Помогите пожалуста вот код: read(fin,ch); if (ord(ch)=10) or (ord(ch)=13)...

Проблема при считывании из файла
Пишу простенькую программу по криптографии. В результате шифрования получается...

1
Mawrat
12821 / 5729 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
09.02.2010, 17:25 #2
Для строки память не выделена. И видимо ещё кое-что надо подправить:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
procedure TForm1.LoadButton1Click(Sender: TObject);
 var
 LS, LE, i:integer;
  k: array[1..MaxElements] of integer;
  p2:TStream;
  f:array[1..10] of string;
  W: string;
    begin
    p2:= TFileStream.Create('D:\тест\file34.txt', fmopenread);
     try
     //Предварительно необходимо выделить для строки достаточный объём памяти.
     SetLength(W, p2.size);
     p2.Read(PChar(W)^, p2.size);
     LS := 1;
     LE := Pos(#13#10, W);
       for i := 1 to MaxElements do
      while(LE> 0) do begin
       f[i] := Copy(W, LS, LE - LS);
       
       //Скорее всего надо заменить:
       //delete (W,LS, Length(W)+1);
       delete (W,LS, Length(f[i])+Length(#13#10)); //Либо: delete (W,LS, Length(f[i])+2);
       
       k[i]:=StrToInt(f[i]);
      end;
               for i := 1 to MaxElements do
        StringGrid2.Cells[1, I] := IntToStr(k[i]);
      finally
     p2.Free;
     end;
  end;
end.
И в данном случае файловый поток неудобно использовать. Если окажется, что строки разделяются не через #13#10, а просто через #10 или через #13 - тогда будут проблемы. Еще неприятнее - когда в одном и том же файле следуют разные разделители строк - где-то #13#10, а где-то - по одному из этих символов...
Удобнее объявить текстовый файл. И читать каждое отдельное число через Readln(f, k[i]); Это автоматически решит проблему с разделителями строк.
Кстати, после последнего числа в файле, возможно, нет разделителя #13#10. Это опять довод в пользу применения текстового файла и процедуры Readln().
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2010, 17:25
Привет! Вот еще темы с решениями:

Ошибка при считывании файла
Пожалуйста помогите разобраться почему не находит указанный мною файл. ...

Ошибка при считывании из файла
пишу тестер при кампиляции выдает не понятную ошибку,думаю проблема при...

Переполнение при считывании из файла
Подскажите пожалуйста, где ошибка, вот код чтения из файла: void...

Кракозябры при считывании с файла
Доброго времени суток. Я написал прогу, которая считывает инфу с текстового...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru