Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

запись массива в поток   Найти похожие ветки 

 
Vladimir200000 ©   (2010-02-06 01:51) [0]

подскажите пожалуйста как прочитать из потока, состоящего из целых положительных и отрицательных чисел в массив.


 
Игорь Шевченко ©   (2010-02-06 02:13) [1]

http://ln.com.ua/~openxs/articles/smart-questions-ru.html


 
KilkennyCat ©   (2010-02-06 02:13) [2]

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


 
Германн ©   (2010-02-06 02:22) [3]


> запись массива в поток [D7]
>
> Vladimir200000 ©   (06.02.10 01:51)
>
> подскажите пожалуйста как прочитать из потока

Так в чем проблема? В записи в поток или в чтении из потока?


 
sniknik ©   (2010-02-06 10:33) [4]

> Так в чем проблема?
проблема у них всегда в отсутствии кода... и желании этот код не написать, пусть с помощью, а получить. отсюда и вопросы которые на вид как задания, отсюда и невозможность нормально объяснить чего же они хотят (ну а как объяснить если сам не понимает, что хочет?).


 
Ганя   (2010-02-06 12:07) [5]


> sniknik ©   (06.02.10 10:33) [4]



> и желании этот код не написать, пусть с помощью, а получить


Если человек не знает вообще ничего, начал обучение час назад, то желание получить код, в качестве примера, чтобы разобраться - это совершенно нормальное желание.


 
KilkennyCat ©   (2010-02-06 12:14) [6]


> Если человек не знает вообще ничего, начал обучение час
> назад

то код для "разобраться" ему не поможет. Это поможет лишь более-менее состоявшемуся программисту.
К тому же потоки - это не час назад.
И в любом случае, ничто не избавляет от думания над вопросом и правильной его формулировкой. Программист "час назад" уже должен соображать, как обозвать целые положительные и отрицательные числа, и что это никоим образом не влияет на работу с потоком.
Отсюда вывод: 99.9 % вероятности, что это - даденная ему задача, где одним из условий является определения типа данных, и как следствие, нормального ответа здесь получить вероятность оставшиеся 0.1 %


 
Ганя   (2010-02-06 12:28) [7]


> KilkennyCat ©   (06.02.10 12:14) [6]


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


 
turbouser ©   (2010-02-06 13:10) [8]


> KilkennyCat ©   (06.02.10 12:14) [6]


> и что это никоим образом не влияет на работу с потоком.

Не факт :) А вдруг в поток не интегеры записаны, а их строковое представление :)
Это две разные разницы, однако :)


 
sniknik ©   (2010-02-06 13:11) [9]

> какая форма обучения лучше - от частного к общему или наоборот.
есть единственная форма обучения... это когда один учит/пишет книгу/объясняет, а многие внимают/читают/разбираются самостоятельно.
а когда наоборот одному многие втолковывают/натаскивают/и пишут под него трактаты, так чтобы понял конкретный индивид, это не обучение, это репетиторство, и оно бесплатным не бывает.

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

> а отвечающие априори предполагают, что правильная форма - как раз противоположная.
считаешь что не правы? зачем слова? просто дай ему этот код "для примера", ведь сложностей конкретно с ним никаких, достаточно посмотреть на методы потока.
а я лично пальцем не пошевельну, если не вижу в вопросе попытки разобраться, хоть какого то понимания, а не просто тупо скопированного задания из методички (которое, без контекста, темы/того что говорил преподаватель, просто набор слов). а вот потрепаться на эту тему можно, развлечение как никак...


 
Плохиш ©   (2010-02-06 13:44) [10]


> Если человек не знает вообще ничего, начал обучение час
> назад, то

в конференции ему ещё делать совершенно нечего. Сначала надо основы прочитать.


 
Плохиш ©   (2010-02-06 13:47) [11]


> Ганя   (06.02.10 12:28) [7]

Что-то я не заметил твоих попыток аффтару помочь, так скулишь на отвечающих.


 
turbouser ©   (2010-02-06 13:50) [12]


> Vladimir200000 ©   (06.02.10 01:51)  

Володька, давай подробности - какой поток, какие числа и как делал :)


 
KilkennyCat ©   (2010-02-06 18:10) [13]


> turbouser ©   (06.02.10 13:10) [8]
>
> Не факт :) А вдруг в поток не интегеры записаны, а их строковое
> представление :)


в конечном итоге все - лишь нолики и единички (в двоичной системе)


 
Vladimir200000 ©   (2010-02-07 10:28) [14]

Вот код (не откомпилированный, поэтому и спрашиваю данный вопрос.
Прошу отвечать по сути, а если кому то хочется потрепаться, для этого есть специальные форумы...

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;



 
sniknik ©   (2010-02-07 10:33) [15]

> не откомпилированный, поэтому и спрашиваю данный вопрос.
ну так откомпилируй и вопрос "отпадет"...

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


 
Vladimir200000 ©   (2010-02-07 10:36) [16]

если сам смог откомпилировать, то не задавал бы тут вопросов


 
sniknik ©   (2010-02-07 10:57) [17]

и в чем проблема? компилятор сломался? или "компилять" отказывается? ну так поищи другой компилятор/код, в этом невооруженным взглядом видны ошибки (например первая неопределенная константа MaxElements, тип самого массива под вопросом исходя из того как с ним дальше обращаются...).

а вообще, ссылка из [1], там все написано как/что спрашивать.


 
Anatoly Podgoretsky ©   (2010-02-07 11:29) [18]


> если сам смог откомпилировать, то не задавал бы тут вопросов

Сдавать Дельфи в аренду запрещено лицензионным соглашением.


 
Плохиш ©   (2010-02-07 14:14) [19]


> Vladimir200000 ©   (07.02.10 10:28) [14]

Чем же тебе помочь, немощный?


 
Vladimir200000 ©   (2010-02-07 15:14) [20]

Вот код.


 
Vladimir200000 ©   (2010-02-07 15:17) [21]

Вот код: Выходит сообщение, что записанные числа не 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.


 
Anatoly Podgoretsky ©   (2010-02-07 15:32) [22]

> Vladimir200000  (07.02.2010 15:17:21)  [21]

Это точное сообщение?
Только если длина <> 4


 
Anatoly Podgoretsky ©   (2010-02-07 15:38) [23]

Удалено модератором


 
Vladimir200000 ©   (2010-02-07 16:05) [24]

Точное, при запуске выходит сообщение об ошибки в котором в столбик указаны значения из файла и в конце написано "is not a valid integer value"
Почему то весь файл вписываются в переменную f за один цикл, а потом усе..


 
KilkennyCat ©   (2010-02-07 16:34) [25]


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

потому что ты совершенно не понимаешь, что написал. Где-то передрал код?
Length := p2.Size; - размер чего?
SetLength(F, length); - размер чего?
p2.Read(PChar(F)^, length); - что это делает?


 
KilkennyCat ©   (2010-02-07 16:39) [26]

и до сих пор неизвестно, как собственно, записаны данные, что в file34.txt.
Строковые? в этом есть необходимость? если нужно лишь сохранить и читать и лишь в пределах данной программы нет необходимости в k[i] := strtoint(F);, а раз уж есть, то в таких случаях гораздо лучше использовать strtointdef с последующей обработкой ошибки.


 
sniknik ©   (2010-02-07 19:04) [27]

больно видеть...
вот, хотя и не верю, что поможет, но работать должно
procedure TForm1.LoadButton1Click(Sender: TObject);
const
 MaxElements = 10;
var
 i: integer;
 mas: array[1..MaxElements] of integer;
begin
 with TFileStream.Create("D:\тест\file34.txt", fmopenread) do
   try
     Read(mas[1], MaxElements*(SizeOf(integer)));
     for i:= 1 to MaxElements do
       StringGrid2.Cells[1, i] := IntToStr(mas[i]);
   finally
     Free;
   end;
end;


 
KilkennyCat ©   (2010-02-07 21:35) [28]


> но работать должно

ага, особенно если в файле следующее:
0123456789
или
0 1 2 3 4 5 6 7 8 9
или
0
1
2
3
4
5
7
8
9
или
01234567899 - здесь тоже 10 чисел


 
sniknik ©   (2010-02-07 21:41) [29]

> ага, особенно если в файле следующее:
это не важно, проверь. просто результат будет неожиданным если ждать чего то конкретного... но на то и сказал что вряд ли поможет.


 
KilkennyCat ©   (2010-02-07 21:49) [30]


> sniknik ©   (07.02.10 21:41) [29]

а, ну если в принципе, то конечно, работать должно :), только тогда надо вместо IntToStr(mas[i]);
IntToStrDef(mas[i], 0);


 
KilkennyCat ©   (2010-02-07 21:59) [31]

вах, я перепутал с strtointdef :)


 
Anatoly Podgoretsky ©   (2010-02-07 21:59) [32]

> KilkennyCat  (07.02.2010 21:49:30)  [30]

Откуда ты взял вторую функцию и что по твоему она должна делать.


 
KilkennyCat ©   (2010-02-08 00:19) [33]


> Anatoly Podgoretsky ©   (07.02.10 21:59) [32]


из своей глючной памяти, откуда ж еще. по-моему, она должна возвращать некое дефолтное значение, если вдруг совершается попытка конвертировать в строку нечисловое. :) У инопланетной Делфи такая есть.


 
Германн ©   (2010-02-08 03:01) [34]


> У инопланетной Делфи такая есть.

У инопланетных зеленых чертиков точно есть такая Делфи. :)


 
Anatoly Podgoretsky ©   (2010-02-08 07:16) [35]

> KilkennyCat  (08.02.2010 00:19:33)  [33]

Такой чистый переменный, железный птиц пытался.
А интегер он гадский все никак не хотел чиститься от значения.
Все значения правильный.
Все от $00000000 до @FFFFFFFF


 
brother ©   (2010-02-08 07:21) [36]

> @FFFFFFFF

это сколько?


 
Anatoly Podgoretsky ©   (2010-02-08 07:32) [37]

> brother  (08.02.2010 07:21:36)  [36]

-1


 
Anatoly Podgoretsky ©   (2010-02-08 07:33) [38]

> brother  (08.02.2010 07:21:36)  [36]

Но я бы такой вопрос при наличии калькулятора Виндоус не задавал бы.
Run/Calc/Enter


 
brother ©   (2010-02-08 07:37) [39]

> Run/Calc/Enter

ставлю @FFFFFFFF в десятичной выводит: 4294967295, где -1 ?


 
Anatoly Podgoretsky ©   (2010-02-08 07:43) [40]

> brother  (08.02.2010 07:37:39)  [39]

А она не знает тебе что интегер или кардинал, ты наоборот пробуй



Страницы: 1 2 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.076 c
15-1269379803
Юрий
2010-03-24 00:30
2010.08.27
С днем рождения ! 24 марта 2010 среда


2-1265626291
Petr
2010-02-08 13:51
2010.08.27
Работа с Вложенными циклами


2-1270050340
Delphist2
2010-03-31 19:45
2010.08.27
вопрос по ADO


4-1235478756
EgorovAlex
2009-02-24 15:32
2010.08.27
Можно ли передавать из одного потока в другой хендл открытого


2-1270871051
tippa
2010-04-10 07:44
2010.08.27
Synchronize и критические секции