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

Вниз

Чтение из файла по байтно   Найти похожие ветки 

 
KOLBoss ©   (2007-09-02 06:31) [0]

Доброе время Суток всем!
Добрые люди подсажите как провельно с помошью KOL считывать файлы по байтам.
Справку я читал вот и написал примерчик нерабочий

   F:= FileCreate(sFile, ofOpenRead);
   while FileEOF(F) and (i < 101) do
   begin
     FileSeek(F, 7, 0);
     FileRead(F, B, 2);
     s:= s + StringHex(B);
     inc(i);
   end;
   FileClose(F);

Зарание Большое спасибо.


 
=BuckLr=   (2007-09-02 11:54) [1]

Почему бы не использовать PSTream?
И ещё - разве в KOL есть StringHex?


 
KOLBoos   (2007-09-02 12:53) [2]

Спасибо за совет, попрубую
а зачем тогда FileCreate
и небудет-ли медленно  если огромный файл, а мне нужен только заголовок
StringHex это моя функция


 
KOLBoos   (2007-09-02 15:12) [3]

Чего-то неполучается, почемуто в s:string; пусто
что там что здесь всеравно пусто.

   Stream:= NewReadFileStream(sFile);
   Stream.Read(s, 100);

Дайте примерчик
В книшке нет примеров в чём у меня и затруднения.


 
ANTPro ©   (2007-09-02 16:14) [4]

> [3] KOLBoos   (02.09.07 15:12)

Stream.ReadStr;


 
ANTPro ©   (2007-09-02 16:15) [5]

> [3] KOLBoos   (02.09.07 15:12)

Кстати на www.KOLNMCK.ru есть куча статей :)


 
Дмитрий К ©   (2007-09-02 16:15) [6]

Stream:= NewReadFileStream(sFile);
SetLength(s, 100); //выделяем память
Stream.Read(s[1], 100);
...


 
Vladimir Kladov   (2007-09-02 16:20) [7]

String это указатель на то место, где хранится строка. Вы пытаетесь затереть указатель и еще 100-4=96 байт памяти в стеке, убивая программу наповал. Сначала вам нужно прочитать книжку по Delphi и по Паскалю. В своей книжке Вирта, Семашко и других авторов переписывать я не намерен у меня книга по KOL.

Вам нужен 1 байт, читайте в Char или в Byte.

s := s + x; в цикле - это самое медленное, что можно придумать. Память выделять нужно заранее, или большими блоками, по 1 байту - процессор сгорит.


 
KOLBoos   (2007-09-02 16:31) [8]

Спасибо за  www.KOLNMCK.ru но там одни обновления
наверно имелось ввиду http://kolmck.net/ я там не нашёл примера для чтения из вайлов кроме битмепов

Stream:= NewReadFileStream(sFile);
SetLength(s, 100); //выделяем память
Stream.Read(s[1], 100);

пробывал неработает.


 
KOLBoos   (2007-09-02 16:36) [9]


> Vladimir Kladov

Зачем такие замудрения на VCL всё просто работает через Stream кроме Reset по сети не работает (нехватает прав)
я ненавичёк в делфи долько в KOL навичок
неужеле нет нигде в инете примерчика (дайте линк пожалуйста).


 
homm ©   (2007-09-02 16:37) [10]

> Спасибо за  www.KOLNMCK.ru но там одни обновления


http://www.kolnmck.ru/lessons/lessons.shtml


 
KOLBoss ©   (2007-09-02 16:44) [11]

http://www.kolnmck.ru/lessons/lessons.shtml
зачем мне справочник на английском у меня уже есть на русском
наверно имелось ввиду http://www.kolnmck.ru/lessons/H_File.shtml
там нет FileCreate


 
ANTPro ©   (2007-09-02 16:59) [12]

> [11] KOLBoss ©   (02.09.07 16:44)

http://www.kolnmck.ru/lessons/lessons11.shtml - сюда ходи :)
Кстати а что ты хочешь то? :)


 
KOLBoos   (2007-09-02 17:04) [13]

http://www.kolnmck.ru/lessons/lessons11.shtml
там тоже рабрта с картинками
у меня снифилка на спутник настроена
много неизвестных файлов, понятно что вручную только парится м время тратить
вот и мне надо програмулинку для определения типа файла.


 
ANTPro ©   (2007-09-02 17:27) [14]

> [13] KOLBoos   (02.09.07 17:04)

Пойдет?
program Project1;

uses KOL;

var
 ST: PStream;
 FileID: array[0..3] of Char;

begin
 ST := NewReadFileStream("test.rar");
 ST.Position := 0;
 ST.Read(FileID, 4);
 if FileID="Rar!" then MsgOK("Это RAR");
 ST.Free;
end.


 
KOLBoss ©   (2007-09-03 06:17) [15]

Большое спасиба всем (Осебенно "ANTPro"),
Заработала!


 
KOLBoss ©   (2007-09-03 07:46) [16]


procedure TForm1.Button1Click(Sender: PObj);
begin
ChangeFileExt("C:\123.xxx", ".txt")
end;

Почему неработает
версия KOL 2.69


 
Vladimir Kladov   (2007-09-03 08:33) [17]

Это функция, возвращает строку "C:\123.txt". Вы ее просто не используете.


 
KOLBoss ©   (2007-09-03 09:38) [18]

В книшке написано
ChangeFileExt( fname, ext ) - изменяет расширение указанного файла.

а как тогда переименовать файл?


 
Compiler ©   (2007-09-03 11:25) [19]


> а как тогда переименовать файл?
RenameFile(Pchar("OldName"),Pchar("NewName"),True);


 
Compiler ©   (2007-09-03 11:27) [20]


> Compiler ©   (03.09.07 11:25) [19]

Ошибочка вышла.
Rename и KOL нет.
Использовать MoveFile(...);


 
KOLBoss ©   (2007-09-03 12:04) [21]

Спасибо работает!



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

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

Наверх




Память: 0.51 MB
Время: 0.017 c
2-1208175871
assassin8899
2008-04-14 16:24
2008.05.11
AQL запрос


15-1206785103
Antonio
2008-03-29 13:05
2008.05.11
делфи


2-1208197743
ser_ega
2008-04-14 22:29
2008.05.11
Explorer...


2-1208264686
assassin8899
2008-04-15 17:04
2008.05.11
Словарь


15-1206933934
TPL
2008-03-31 07:25
2008.05.11
Если нету Com-порта