Форум: "Начинающим";
Текущий архив: 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]
А она не знает тебе что интегер или кардинал, ты наоборот пробуй
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.07 c