Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2007, 15:35   #1
vitalik007
Дельфист
Форумчанин
 
Аватар для vitalik007
 
Регистрация: 14.08.2007
Сообщений: 317
По умолчанию Как прочитать данные из самого себя

Как мне прочитать данные из самого себя если я знаю позицию в файл откуда надо читать
Вот мой код
const size=425472;
var code:string;
f:Thandle;
temp:cardinal;
begin
f:=createfile(Pchar(application.Exe Name),GENERIC_READ,0,nil,OPEN_EXIST ING,0,0);
setfilePointer(f,size,nil,FILE_Begi n);
readfile(f,code,100,temp,nil);
closehandle(f);
ICQ-465033557
WINDOWS CE THE BEST
vitalik007 вне форума Ответить с цитированием
Старый 14.12.2007, 16:37   #2
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

1. Попробуй вызвать CreateFile с такими флагами
CreateFile(Pchar(application.ExeNam e),GENERIC_READ,FILE_SHARE_READ+FIL E_SHARE_WRITE,0,OPEN_EXISTING,0,0);

2. Обьявить переменную Code как pchar
пыщь
JTG вне форума Ответить с цитированием
Старый 14.12.2007, 16:44   #3
vitalik007
Дельфист
Форумчанин
 
Аватар для vitalik007
 
Регистрация: 14.08.2007
Сообщений: 317
По умолчанию

<!!2. Обьявить переменную Code как pchar>
Если я объявлю code как Pchar там можно будет хранить большой текст??
ICQ-465033557
WINDOWS CE THE BEST
vitalik007 вне форума Ответить с цитированием
Старый 14.12.2007, 16:49   #4
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Можно.

GetMem(code, size);
...
FreeMem(Code);
пыщь
JTG вне форума Ответить с цитированием
Старый 14.12.2007, 18:50   #5
vitalik007
Дельфист
Форумчанин
 
Аватар для vitalik007
 
Регистрация: 14.08.2007
Сообщений: 317
По умолчанию

не получается вот что у меня за дело!
1.Это я копирую файл в папку какую-то
copyfile(Pchar(extractfilepath(appl ication.ExeName)+'Compiler.exe'),pc har(exefile),false);
buffer:=codememo.Text;
assignfile(f,exefile);
append(f);
writeln(f,buffer);
closefile(f);
//exefile-новая папка
2.запускаю
winexec(Pchar(exefile),sw_show);
3.в compiler.exe написано
const size=425472;

var code:string;
f:Thandle;
temp:cardinal;
begin
f:=createfile(Pchar(application.Exe Name),GENERIC_READ,0,nil,OPEN_EXIST ING,0,0);
setfilePointer(f,size,nil,FILE_Begi n);
readfile(f,code,100,temp,nil);
closehandle(f);
showmessage(code);

ВОТ!!

в файл записывается но когда открываю то ничего не считывает
ICQ-465033557
WINDOWS CE THE BEST
vitalik007 вне форума Ответить с цитированием
Старый 14.12.2007, 18:59   #6
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

assignfile(f,exefile);
append(f);
writeln(f,buffer);

Не самая лучшая идея открывать бинарник, коим является EXE, как текстовый файл. Используй CreateFile/WriteFile.
Я так понял тебе надо к программе дописать текст, чтоб она его с хвоста прочитала и вывела в сообщении? Глянь эту тему http://programmersforum.ru/showthread.php?t=5896

ЗЫ: Хех, Индийский Код: extractfilepath(application.ExeName )+'Compiler.exe'
пыщь

Последний раз редактировалось JTG; 14.12.2007 в 19:07.
JTG вне форума Ответить с цитированием
Старый 14.12.2007, 19:08   #7
vitalik007
Дельфист
Форумчанин
 
Аватар для vitalik007
 
Регистрация: 14.08.2007
Сообщений: 317
По умолчанию

да там ничего почти не написано что мне надо мне надо знать где у меня в коде ошибка
ICQ-465033557
WINDOWS CE THE BEST
vitalik007 вне форума Ответить с цитированием
Старый 14.12.2007, 19:24   #8
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

assignfile(f,exefile);
append(f);

Не уверен, можно ли так делать, может это то же, что открыть exe блокнотом, дописать текст и сохранить. Код при этом само-собой гибнет.
Открой сompiler.exe через handle:=CreateFile..., установи указатель в конец и запиши нужные данные через WriteFile(handle, pchar(codememo.Text)...

Или так

Код:
const size=425472;
var code:array[0..255] of char;
     f:Thandle;
     temp:cardinal;
begin
  f:=createfile(Pchar(application.ExeName),GENERIC_R EAD,0,nil,OPEN_EXISTING,0,0);
  setfilePointer(f,size,nil,FILE_Begin);
  readfile(f,code,100,temp,nil);
  closehandle(f);
  MessageBox(form1.handle (или 0, если нет родителя),code,'Заголовок',MB_OK);
пыщь

Последний раз редактировалось JTG; 14.12.2007 в 19:28.
JTG вне форума Ответить с цитированием
Старый 15.12.2007, 18:51   #9
vitalik007
Дельфист
Форумчанин
 
Аватар для vitalik007
 
Регистрация: 14.08.2007
Сообщений: 317
По умолчанию

Я так пробовал вообще тогла ничего не записывается
ICQ-465033557
WINDOWS CE THE BEST
vitalik007 вне форума Ответить с цитированием
Старый 16.12.2007, 15:52   #10
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

пробуем так:
Код:
const size=425472;   
var code:array[0..255] of char;   
     f:Thandle;   
     temp:DWORD;   
begin   
    if:=createfile(Pchar(application.ExeName),GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,0,0);  
    if F=INVALID_HANDLE_VALUE then 
   begin
    MessageBox(0,'ошибка открытия файла','Заголовок',MB_OK);
    exit;
   end;
  setfilePointer(f,size,nil,FILE_Begin);   
  readfile(f,code,100,temp,0);   
  closehandle(f);   
  MessageBox(0,code,'Заголовок',0);
rpy3uH вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как прочитать данные из Repeater? posdnyaa БД в Delphi 0 07.04.2008 09:50
Покажите себя! Elefanter Софт 20 21.03.2008 11:48
Pascal//определить длину самого короткого и самого длинного слова в строке ShnurOK Помощь студентам 2 16.12.2007 10:43
Как мне в асме прочитать данные из файла? lelicman Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 10.10.2007 09:24