![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
запись массива в поток [D7]
Vladimir200000 © (2010-02-06 01:51:00)подскажите пожалуйста как прочитать из потока, состоящего из целых положительных и отрицательных чисел в массив.
Vladimir200000 (2010-02-07 16:05:00) [21]Точное, при запуске выходит сообщение об ошибки в котором в столбик указаны значения из файла и в конце написано "is not a valid integer value"
Почему то весь файл вписываются в переменную f за один цикл, а потом усе..
Anatoly Podgoretsky (2010-02-07 15:38:00) [22]Удалено модератором
Anatoly Podgoretsky (2010-02-07 15:32:00) [23]> Vladimir200000 (07.02.2010 15:17:21) [21]
Это точное сообщение?
Только если длина <> 4
Vladimir200000 (2010-02-07 15:17:00) [24]Вот код: Выходит сообщение, что записанные числа не integer.
Получается, что когда я читаю числа из потока, то они считываются как одно целое что ли?
unit TEST1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ToolWin, ComCtrls, ActnMan, ActnCtrls, Grids;
const
MaxElements = 10;
type
TForm1 = class(TForm)
StringGrid2: TStringGrid;
LoadButton1: TButton;
procedure LoadButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.LoadButton1Click(Sender: TObject);
var
Length, i:integer;
p2: TStream;
k: array[1..MaxElements] of integer;
F: string;
begin
p2 := TFileStream.Create('D:\тест\file34.txt', fmopenread);
try
Length := p2.Size;
SetLength(F, length);
for I := 1 to MaxElements do begin
p2.Read(PChar(F)^, length);
k[i] := strtoint(F);
end;
finally
end;
p2.Free;
for I := 1 to MaxElements do
StringGrid2.Cells[1, i] := IntToStr(k[i]);
end;
end.
Vladimir200000 (2010-02-07 15:14:00) [25]Вот код.
Плохиш (2010-02-07 14:14:00) [26]
> Vladimir200000 © (07.02.10 10:28) [14]
Чем же тебе помочь, немощный?
Anatoly Podgoretsky (2010-02-07 11:29:00) [27]
> если сам смог откомпилировать, то не задавал бы тут вопросов
Сдавать Дельфи в аренду запрещено лицензионным соглашением.
sniknik (2010-02-07 10:57:00) [28]и в чем проблема? компилятор сломался? или "компилять" отказывается? ну так поищи другой компилятор/код, в этом невооруженным взглядом видны ошибки (например первая неопределенная константа MaxElements, тип самого массива под вопросом исходя из того как с ним дальше обращаются...).
а вообще, ссылка из [1], там все написано как/что спрашивать.
Vladimir200000 (2010-02-07 10:36:00) [29]если сам смог откомпилировать, то не задавал бы тут вопросов
sniknik (2010-02-07 10:33:00) [30]> не откомпилированный, поэтому и спрашиваю данный вопрос.
ну так откомпилируй и вопрос "отпадет"...
> для этого есть специальные форумы...
мы в курсе. здесь лучше, и начинают как бы всегда авторы...
Vladimir200000 (2010-02-07 10:28:00) [31]Вот код (не откомпилированный, поэтому и спрашиваю данный вопрос.
Прошу отвечать по сути, а если кому то хочется потрепаться, для этого есть специальные форумы...
procedure TForm1.LoadButton1Click(Sender: TObject);
var
i:integer;
p2: TStream;
k: array[1..MaxElements] of integer;
Length: Integer;
begin
p2 := TFileStream.Create('D:\тест\file34.txt', fmopenread);
try
Length := p2.Size;
SetLength(k[i],length);
p2.Read(k[i],p2.Size);// насколько я понимаю в этой строке идет чтение в массив
for I := 1 to 10 do
StringGrid2.Cells[1, i] := IntToStr(k[i]);
finally
p2.Free;
end;
KilkennyCat (2010-02-06 18:10:00) [32]
> turbouser © (06.02.10 13:10) [8]
>
> Не факт :) А вдруг в поток не интегеры записаны, а их строковое
> представление :)
в конечном итоге все - лишь нолики и единички (в двоичной системе)
turbouser (2010-02-06 13:50:00) [33]
> Vladimir200000 © (06.02.10 01:51)
Володька, давай подробности - какой поток, какие числа и как делал :)
Плохиш (2010-02-06 13:47:00) [34]
> Ганя (06.02.10 12:28) [7]
Что-то я не заметил твоих попыток аффтару помочь, так скулишь на отвечающих.
Плохиш (2010-02-06 13:44:00) [35]
> Если человек не знает вообще ничего, начал обучение час
> назад, то
в конференции ему ещё делать совершенно нечего. Сначала надо основы прочитать.
sniknik (2010-02-06 13:11:00) [36]> какая форма обучения лучше - от частного к общему или наоборот.
есть единственная форма обучения... это когда один учит/пишет книгу/объясняет, а многие внимают/читают/разбираются самостоятельно.
а когда наоборот одному многие втолковывают/натаскивают/и пишут под него трактаты, так чтобы понял конкретный индивид, это не обучение, это репетиторство, и оно бесплатным не бывает.
> и он просит помощи по одной из форм
в том то и дело, не помощи он просит, а чтобы делали за него. выглядит во всяком случае так.
> а отвечающие априори предполагают, что правильная форма - как раз противоположная.
считаешь что не правы? зачем слова? просто дай ему этот код "для примера", ведь сложностей конкретно с ним никаких, достаточно посмотреть на методы потока.
а я лично пальцем не пошевельну, если не вижу в вопросе попытки разобраться, хоть какого то понимания, а не просто тупо скопированного задания из методички (которое, без контекста, темы/того что говорил преподаватель, просто набор слов). а вот потрепаться на эту тему можно, развлечение как никак...
turbouser (2010-02-06 13:10:00) [37]
> KilkennyCat © (06.02.10 12:14) [6]
> и что это никоим образом не влияет на работу с потоком.
Не факт :) А вдруг в поток не интегеры записаны, а их строковое представление :)
Это две разные разницы, однако :)
Ганя (2010-02-06 12:28:00) [38]
> KilkennyCat © (06.02.10 12:14) [6]
Вопрос сводится к тому, какая форма обучения лучше - от частного к общему или наоборот. Если цель обучения неизвестна, ответа на этот вопрос быть не может. Причем автору цель обучения как раз известна, и он просит помощи по одной из форм, а отвечающие априори предполагают, что правильная форма - как раз противоположная.
KilkennyCat (2010-02-06 12:14:00) [39]
> Если человек не знает вообще ничего, начал обучение час
> назад
то код для "разобраться" ему не поможет. Это поможет лишь более-менее состоявшемуся программисту.
К тому же потоки - это не час назад.
И в любом случае, ничто не избавляет от думания над вопросом и правильной его формулировкой. Программист "час назад" уже должен соображать, как обозвать целые положительные и отрицательные числа, и что это никоим образом не влияет на работу с потоком.
Отсюда вывод: 99.9 % вероятности, что это - даденная ему задача, где одним из условий является определения типа данных, и как следствие, нормального ответа здесь получить вероятность оставшиеся 0.1 %
Ганя (2010-02-06 12:07:00) [40]
> sniknik © (06.02.10 10:33) [4]
> и желании этот код не написать, пусть с помощью, а получить
Если человек не знает вообще ничего, начал обучение час назад, то желание получить код, в качестве примера, чтобы разобраться - это совершенно нормальное желание.