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

Вниз

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

 
ma5ter ©   (2006-01-29 15:22) [0]

Что-то не получается прочитать из бинарника строку по определенному адресу. Кажется я что-то делаю не так ...

type
mTYPE=(mCHAR, mINT, mINT2, mDOUBLE, mFLOAT, mTEXT);

MyConponent=class(TComponent)
private
 FImaFile:TMemoryStream;
 FFile_Size:integer;
 Manufacturer:string;
 Function MyComponent.bin2text (input_type:mTYPE; counter:byte; adress:cardinal):string;
published
  procedure LoadFromStream(Stream:TStream);
end;

procedure Register;

implementation

constructor MyComponent.Create(aowner:Tcomponent);
begin
inherited create(Aowner);
FImaFile:=TMemoryStream.Create;
end;

destructor MyComponent.Destroy;
begin
FImaFile.Free;
end;

Function MyComponent.bin2text (input_type:mTYPE; counter:byte; adress:cardinal):string;
var s:string;
begin
  case input_type of
  SUN_CHAR:
     begin
     GetMem(pS,255);
     adr:=Cardinal(pS);
     FImaFile.Position:=adress;
     FImaFile.Read(pS^,counter);
     s:=pS^;//вот здесь ошибка Access violation at address ...
     freemem(pS);
  end;
result:=s;
end;

Procedure MyComponent.LoadFromStream(Stream:TStream);
begin
FImaFile.LoadFromStream(stream);
FImaFile.Position:=0;
FFile_Size:=FImaFile.Size;
Manufacturer:=bin2text(mCHAR, 9, $60);
end;


 
Eraser ©   (2006-01-29 15:34) [1]


> ma5ter ©   (29.01.06 15:22)

А TFileStream не пробовал использовать?


 
ma5ter ©   (2006-01-29 15:35) [2]

а какая разница то?


 
Fay ©   (2006-01-29 15:36) [3]

Где тут строки?
Где здесь файлы?
Что это за фигня (уверен, это даже не компилируется) вАщЕ?

P.S.
SetString тебе в помощь


 
ma5ter ©   (2006-01-29 15:40) [4]

Тут другой случай. Я через TFileStream открываю файл и передаю в потоке в стандартную процедуру. Но не в этом дело однозначано. Если добавить:

     for i:=0 to counter-1 do
      begin
       pC:=ptr(adr+cardinal(i));
       s:=s+pC^;
      end;

вместо s:=pS^;//вот здесь ошибка Access violation at address ... все работает. Почему не работает первый вариант?


 
ma5ter ©   (2006-01-29 15:44) [5]

2Fay: Это не должно компилироваться, т.к. это пример кода. Кучи кода не относящейся к делу не представлено. А проблемка в предпоследней строке Manufacturer:=bin2text(mCHAR, 9, $60);, где идет чтение строки 9 символов (mCHAR) из файла находящемся в TMemoryStream по адресу $60.


 
ma5ter ©   (2006-01-29 15:46) [6]

да pC это ^char


 
ma5ter ©   (2006-01-29 15:48) [7]

pS:^string


 
Eraser ©   (2006-01-29 15:49) [8]


> ma5ter ©   (29.01.06 15:44) [5]

Сначала давай реальный код - потом будут советы, то что ты тут выложил -  не код, а набор символов, в котором абсолютно нет желания разбираться.

> pS:^string

ужос.


 
Fay ©   (2006-01-29 16:12) [9]

s:= pS^ будет ползти до первого #0, и не факт, что он найдется в пределах выделенной памяти.

> pS : ^String
Действительно, ужос (с) Eraser



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

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

Наверх





Память: 0.46 MB
Время: 0.011 c
2-1140360239
Godness
2006-02-19 17:43
2006.03.05
директива private


15-1139810845
Ega23
2006-02-13 09:07
2006.03.05
С Днём рождения! 13 февраля


15-1139607859
Vudu
2006-02-11 00:44
2006.03.05
Нестандартное использование компьютера


6-1132238881
Stealth
2005-11-17 17:48
2006.03.05
TCP клиент Indy в Delphi 2005


8-1127217771
tomek
2005-09-20 16:02
2006.03.05
Странная ошибка при работе с контекстом и таймером





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский