Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запись в файл, без искажения 
V
    Опции темы
Anarhist
  Дата 18.10.2006, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 11.2.2006

Репутация: нет
Всего: нет



Как записать в файл без искажение, после записи в файл ставятся всяческие идентефикаторы и т. д..
"Привет"- Вот что получается при записи методом Write, мне вот нужно html страницу создать, а как я с такой записью это сделаю, как записать без добавлений и искажений?        smile  smile  smile 
PM MAIL   Вверх
Snowy
Дата 18.10.2006, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Значит как-то неправильно пишешь. Из всех способов выбрал единственный неправильный smile
Ну например, можно все строки добавить в TStringList, а потом вызвать его метод SaveToFile.
PM MAIL   Вверх
Anarhist
Дата 20.10.2006, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 11.2.2006

Репутация: нет
Всего: нет



Я вынужден поять поднять тему, посколку этот глюк уже мешает правильной работе программы. Теперь при записи более сложных строк он подставляет страные символы которые мешают работе всей html страницы, например вот- 5.gerz {position: absolute ; left: 330px; top: 440px;} или  /<input name="MyButton" type="radio" class=gerz>, бред одним слововм. вот код который все это делает.
Код

library brc;

{ Important note about DLL memory management: ShareMem must be the
  first unit in your library's USES clause AND your project's (select
  Project-View Source) USES clause if your DLL exports any procedures or
  functions that pass strings as parameters or function results. This
  applies to all strings passed to and from your DLL--even those that
  are nested in records and classes. ShareMem is the interface unit to
  the BORLNDMM.DLL shared memory manager, which must be deployed along
  with your DLL. To avoid using BORLNDMM.DLL, pass string information
  using PChar or ShortString parameters. }

uses
  SysUtils,
  Classes;
  
type
   Trec = record
   html : array[0..100] of string[255];
    //Adders: string[60];
end;
var
  F : file of Trec;
  Wr : Trec;
  pos : integer;

{$R *.res}
function Save(Name,bg : string) : string;//Èìÿ ôóíêöèè
begin
   AssignFile(F, 'Project\index.html');//Ññûëêà íà îòêðûâàåòìûé ôàéë
      if not fileExists('Project\index.html') then//åñëè ôàéë
       begin
         Rewrite(F);
       end
       else begin
         Reset(F);
        end;
        Pos := 0;

        Wr.html[0] := '<html>';
        Wr.html[1] := '<style>';
        Wr.html[10] := '</style>';
        Wr.html[11] := '<head>';
        Wr.html[20] := '</head>';
        Wr.html[21] := '<body bgcolor="#'+bg+'">';
        Wr.html[22] := '<title>'+Name+'</title>';
        Wr.html[100] := '</html>';
            Write(F, Wr);
end;
function CreateRadioButton(Name,x,y : string) : string;//Èìÿ ôóíêöèè
begin
   AssignFile(F, 'Project\index.html');//Ññûëêà íà îòêðûâàåòìûé ôàéë
      Reset(F);
        Wr.html[2] := '.'+Name+' {position: absolute ; left: '+x+'px; top: '+y+'px;}';
        Wr.html[23] := '<input name="MyButton" type="radio" class='+Name+'>';
           Write(F, Wr);
end;
exports Save;
exports CreateRadioButton;
begin
end.

Две функции по форматированию html кодов...
Пробовал разные форматы, одно и тоже...

Это сообщение отредактировал(а) Anarhist - 20.10.2006, 10:00
PM MAIL   Вверх
Hidrag
Дата 20.10.2006, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: нет
Всего: 25



Попробуй для записи файлов использовать TFileStream, а не старый еще со времен DOS способ работы с файлами, или как посоветовал Snowy


--------------------
user posted image
PM WWW ICQ   Вверх
Anarhist
Дата 20.10.2006, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 11.2.2006

Репутация: нет
Всего: нет



Где достать инфоу о его исползовании?
PM MAIL   Вверх
Sansa
Дата 20.10.2006, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 18.10.2006
Где: Королев

Репутация: 3
Всего: 6



Ты неправильно записываешь. Попробуй вот это:
Код

library brc;
{ Important note about DLL memory management: ShareMem must be the
  first unit in your library's USES clause AND your project's (select
  Project-View Source) USES clause if your DLL exports any procedures or
  functions that pass strings as parameters or function results. This
  applies to all strings passed to and from your DLL--even those that
  are nested in records and classes. ShareMem is the interface unit to
  the BORLNDMM.DLL shared memory manager, which must be deployed along
  with your DLL. To avoid using BORLNDMM.DLL, pass string information
  using PChar or ShortString parameters. }
uses
  SysUtils,
  Classes;

type
   Trec = record
   html : array[0..100] of string[255];
    //Adders: string[60];
end;
var
  F : file of Trec;
  Wr : Trec;
  pos : integer;
{$R *.res}

{Подготовка тела страницы}
procedure PrepareHtml(var ARec: TRec);
begin
  if Assigned(ARec) then
    with  ARec do
    begin
      html[0] := '<html>';
      html[1] := '<style>';
      html[10] := '</style>';
      html[11] := '<head>';
      html[20] := '</head>';
      html[21] := '<body bgcolor="#'+bg+'">';
      html[22] := '<title>'+Name+'</title>';
      html[100] := '</html>';
    end;
end;

function Save(Name,bg : string) : string;//Eiy ooieoee
var
  I: integer;
begin
   AssignFile(F, 'Project\index.html');//Nnueea ia ioe?uaaaoiue oaee
   if not fileExists('Project\index.html') then//anee oaee
   begin
     Rewrite(F);
   end
   else
   begin
     Reset(F);
   end;
   Pos := 0;
   PrepareHTML(Wr);  // подготовка данных
   {!!! Обрати внимание! Последовательно выводим строку за строкой, а не всю структуру разом
   Иначе, конечно будет записываться служебная информация
   }
   for I:= Low(Wr.html) to High(Wr.html) do
     Write(F, Wr.html[I]);
end;
function CreateRadioButton(Name,x,y : string) : string;//Eiy ooieoee
begin
   AssignFile(F, 'Project\index.html');//Nnueea ia ioe?uaaaoiue oaee
      Reset(F);
        Wr.html[2] := '.'+Name+' {position: absolute ; left: '+x+'px; top: '+y+'px;}';
        Wr.html[23] := '<input name="MyButton" type="radio" class='+Name+'>';
           Write(F, Wr);
end;
exports Save;
exports CreateRadioButton;
begin
end.

--------------------
- Здравствуйте, я Ваш патологоанатом
PM MAIL ICQ   Вверх
Hidrag
Дата 20.10.2006, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: нет
Всего: 25





--------------------
user posted image
PM WWW ICQ   Вверх
Anarhist
Дата 20.10.2006, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 11.2.2006

Репутация: нет
Всего: нет



Куча ошибок, почте все исправил, остались две, тут 
Код

if Assigned(ARec) then

И тут 
Код

for I:= Low(Wr.html) to High(Wr.html) do
     Write(F, Wr.html[I]);

Обе Несовместимость типов, с Assigned не работал поэтому как исправить не знаю...
PM MAIL   Вверх
Sansa
Дата 20.10.2006, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 18.10.2006
Где: Королев

Репутация: 3
Всего: 6



Можешь удалить строку с Assigned (она проверяет что экземпляр создан). Поменяй декларацию файла на 
var
  F : TextFile; 
и все
--------------------
- Здравствуйте, я Ваш патологоанатом
PM MAIL ICQ   Вверх
Romikgy
Дата 20.10.2006, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Anarhist, если VCL можно юзать бери 
Цитата(Snowy @  18.10.2006,  18:48 Найти цитируемый пост)
Ну например, можно все строки добавить в TStringList, а потом вызвать его метод SaveToFile.

проще на порядки


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Alexeis
Дата 20.10.2006, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(Anarhist @  20.10.2006,  10:07 Найти цитируемый пост)
Где достать инфоу о его исползовании? 

Кратко основные методы и свойства я описывал здесь 
http://forum.vingrad.ru/index.php?showtopi...;hl=tfilestream


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
AugMaster
Дата 21.10.2006, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 3.8.2006

Репутация: нет
Всего: 1



дедовским досовским надежным способом
F:File of byte;
каждую строку прогоняешь в цикле 
for tmp1:=1 to length(st{строка на запись}) do begin b{byte}:=ord(st[tmp1]);write(f,b);end;
b:=13;{перевод строки, "Enter"}
write(f,b);

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


Это сообщение отредактировал(а) AugMaster - 21.10.2006, 21:51
PM MAIL   Вверх
Демо
Дата 22.10.2006, 02:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Anarhist

Ты привел код библиотеки. А обратил внимание на то, что у тебя в комментариях написано в самом начале?


--------------------
    
PM MAIL ICQ Skype   Вверх
Anarhist
Дата 22.10.2006, 06:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 11.2.2006

Репутация: нет
Всего: нет



Чето я глюконул, подумал что TStringList это vcl, спать надо больше... smile тока вот опять я немогу найти ничего про него!
PM MAIL   Вверх
Anarhist
Дата 22.10.2006, 07:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 11.2.2006

Репутация: нет
Всего: нет



И еще немного не понятно как записывать в него- 
Код

writ.AddStrings('Привет');

И вылетает ошибка что мол несовместимость типов Tstring и String... Как правильно записывать?
PM MAIL   Вверх
kostas
Дата 22.10.2006, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 21.7.2006

Репутация: 3
Всего: 4



Код

...
var t: TStringList;
...
  t:=TStringList.Create;
  try
   t.Add('text');
   ...
   t.SaveToFile('path');
  finally
   t.Free;
  end;

PM ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1499 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.