Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
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]

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


 
brother ©   (2010-02-08 07:44) [41]

> @FFFFFFFF

это что?


 
brother ©   (2010-02-08 07:45) [42]

я про @


 
Anatoly Podgoretsky ©   (2010-02-08 19:06) [43]

> brother  (08.02.2010 07:45:42)  [42]

Это следует читать как $


 
brother ©   (2010-02-09 04:32) [44]

в [36] и я об этом...



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

Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.56 MB
Время: 0.088 c
2-1271923997
@!!ex
2010-04-22 12:13
2010.08.27
Как увеличить размер крестика(expand) в TTreeView?


15-1274221434
Германн
2010-05-19 02:23
2010.08.27
Документация.


2-1273989815
fallen_from_skies
2010-05-16 10:03
2010.08.27
создание программы для тестирования учащихся


15-1265369204
Тайлер Дерден
2010-02-05 14:26
2010.08.27
1С, терминальный сервер и печать


11-1221408343
dron9999
2008-09-14 20:05
2010.08.27
не устанавливается компонент ServerSocket&amp;KlientSocket





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский