|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
29.01.2014, 23:54 | #1 |
Пользователь
Регистрация: 14.12.2013
Сообщений: 64
|
Удалить из файла все отрицательные компоненты(Delphi)
Здравствуйте,господа!
Учу самостоятельно Delphi вторую неделю.Нужно решить задание. Организовать файл целых чисел из N компонент. Удалить из файла все отрицательные компоненты. Вывести содержимое файла до и после обработки. Вот запись у файл чисел,но вместо чисел - иероглифы. Код:
2. Как удалить из файла все отрицательные компоненты? 3.Как и куда вывести содержимое файла до и после обработки? Помогите сделать. |
30.01.2014, 00:09 | #2 | |
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
В гугле этот ответ ищется за 10 секунд
В файле не бывает компонентов. Цитата:
По поводу кода не знаю что ты имел в виду под File of Integer, Если цель стояла забить текстовик рандомными числами, то вот исправленный код. Код:
Последний раз редактировалось doktor255; 30.01.2014 в 00:24. |
|
30.01.2014, 00:45 | #3 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,499
|
А как вы увидели эти иероглифы. Наверное, открыли в Блокноте ( слово txt наводит на эту мысль). Тогда все правильно. Блокнот читает побайтно файл, и выводит символы, у которых код равен этому байту.
Вы путаете текстовые и типизированные файлы. Создаете типизированный, и пытаетесь читать как текстовый. Попробуйте кстати вот так Код:
|
30.01.2014, 00:49 | #4 | |
t45t
Участник клуба
Регистрация: 20.03.2012
Сообщений: 1,849
|
Цитата:
type_Oleg, а разве типизированный файл не есть файл записи одного типа и фиксированной длины, то есть: Код:
from dark to light)
Последний раз редактировалось Stilet; 30.01.2014 в 08:58. |
|
30.01.2014, 00:59 | #5 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,499
|
Ну да, и file of integer - тоже типизированный.
|
30.01.2014, 08:51 | #6 | |||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
doktor255, Алексей_2012, я вас очень прошу, не надо давать советы в категорической форме, если не чувствуешь на 100%, что ты владеешь вопросом и являешься в этом Мастером.
например, с чего Вы решили, что автору топика нужен ТЕКСТОВЫЙ файл?! Оттого, что Вы не знаете/не любите/не умеете работать с типизированным файлом?! В данной задачи как раз ЯВНО нужно использовать типизированный файл (ибо только в типизированном файл может идти речь о "компонентах" Цитата:
Цитата:
Единственно, позволю себе дать Вам небольшой совет: вашей программе абсолютно безразлично имя файла (ну, если оно является допустимым в файловой системе, разумеется), но, чтобы не путать себя, других и программы ОС, лучше давать своему файлу СВОЁ расширение. примерно так: Код:
Это позволит Вам не открывать данные файл в блокноте и не пугаться содержимому! Цитата:
самый простой и надежный (имхо) - это использовать доп.файл в качестве временного. Тогда можно читать из исходного файла по одной компоненте, положительные писать во временный файл, отрицательные - игнорировать. После окончания, закрыть оба файла, удалить исходный, переименовать временный в имя, которое было у исходного файла. вариант 2. Создать в памяти массив, равный размеру файла. Прочитать в него положительные числа (как и в первом случае, отрицательные игнорируем). Перезаписать файл и записать в него полученные положительные числа. вариант 3. Самый сложные, муторный, НЕ ЭФФЕКТИВНЫЙ и НЕ НАДЁЖНЫЙ! Алгоритм такой, идём в цикле, читаем из файла по одной компоненте, как только очередная компонента файла оказалась отрицательным числом, то последовательно в цикле сдвигаем все оставшиеся компоненты файла на её место. В данном случае можно использовать тот факт, что типизированный файл является файлом прямого доступа, с помощью процедуры Seek() указатель в файле можно установить на ЛЮБОЙ компонент файла и либо прочитать это компонент, либо - записать новое значение на место этого компонента. рекомендую выбирать из первых двух. Будут сложности, пишите, тут подскажут/помогут. |
|||
30.01.2014, 10:24 | #7 |
t45t
Участник клуба
Регистрация: 20.03.2012
Сообщений: 1,849
|
Serge_Bliznykov, почему сразу категорично?) ведь в моем вложении и есть работа именно с типизированным файлом, но расширение да, текстовое. Причем алгоритм по удалению отрицательных чисел реализован через массив затем файл перезаписывается, или я вас не так понял?
from dark to light)
|
30.01.2014, 15:13 | #8 | |
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
Цитата:
Последний раз редактировалось doktor255; 30.01.2014 в 15:16. |
|
30.01.2014, 17:06 | #9 |
Участник клуба
Регистрация: 29.09.2008
Сообщений: 1,234
|
Он спросил! Какой файл создать?
дополняя текст txt? bmp? bin? dat? mp3? |
30.01.2014, 18:27 | #10 |
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
Извиняюсь за неумение додумывать.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Получить в файле q все компоненты файла f являющиеся точными квадратами (Pascal) | Ziner_Fisher | Помощь студентам | 2 | 02.12.2013 14:11 |
Файловый тип данных: Вывести на экран все отрицательные компоненты файла | Lera64 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 23.05.2013 08:12 |
Дан файл целых чисел. Удалить из него все отрицательные числа | vaako | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 12.04.2012 22:45 |
Записать в файл g все компоненты файла f, которые являются полными квадратами. | loloverg | Помощь студентам | 1 | 20.05.2010 04:36 |
в начале все отрицательные, затем все положительные элементы в матрице | motaro | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 07.03.2008 19:16 |