Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Cледующий код дописывает к файлу перевод строки. Как от этого изб [D7, WinME]


Страницы:   1 2

Алекс А ©   (2004-06-13 01:11:00) 

авиться ?

 ListBox1.Items.LoadFromFile( 'test.txt' );
 ListBox1.Items.SaveToFile( 'test.txt' );

Файл test.txt состоит всего из одного символа "a". После выполнения кода его длина увеличивается до 3 символов. Происходит это возможно из-за того, что каждая строка должна заканчиваться переводом строки. Мне же надо, чтобы ничего лишнего не дописывалось. Если в конце последней строки нет перевода, то чтобы также и оставалось бы. Как этого можно добиться ?


Fay   (2004-06-21 03:51:00) [1]


> Причём что любопытно она может не только уменьшать, но и
> увеличивать длину файла ! ( Правда за счёт всякого мусора.
> )

Спасибо, я в курсе 8).
З.Ы.
SetEndOfFile я просто забыл написать 8).


Алекс А   (2004-06-21 03:44:00) [2]


> Fay   (21.06.04 03:23) [37]
> Перед CloseHandle надо SetEndOfFile(h)


Заработало ! Причём что любопытно она может не только уменьшать, но и увеличивать длину файла ! ( Правда за счёт всякого мусора. )


Fay   (2004-06-21 03:23:00) [3]

Перед CloseHandle надо SetEndOfFile(h)


Алекс А   (2004-06-21 02:47:00) [4]

Почему всё таки не работает укарачивание файла ? В чём ошибка ?

function CutFileLength(aFileName : PAnsiChar; aNewFileSize : Integer): Boolean;
var
h : DWORD;
begin
h := CreateFile(aFileName,  GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0);
if h = DWORD(-1) then begin
   Result := False;
   RaiseLastOSError
end else begin
   SetFilePointer(
     h,
     aNewFileSize, // NEW_FILESIZE, // Сам задашь
     nil,
     FILE_BEGIN);
   CloseHandle(h);
   Result := True;
 end;
end;


Alx2   (2004-06-18 07:27:00) [5]

:)
Вот так писать не надо:

procedure TForm1.Button1Click(Sender: TObject);
var
 S: string;
 len: Integer;
 F: System.Text;
begin
 S := ListBox1.Items.Text;
 Len := Length(S);
 while (Len > 0) and (S[Len] in [ #10, #13]) do dec(Len);
 SetLength(S, Len);
 AssignFile(F, FileName);
 Rewrite(F);
 Write(F, S);
 CloseFile(F);
end;


Алекс А   (2004-06-18 02:57:00) [6]


> Прошло ПЯТЬ дней !!!!!!!!!!!!!!!!!!!!!!!

Глюк редковозникающий, срочности никакой. Но всё надо доводить до конца !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


> Да за это время можно было свой ListBox написать с нуля.

Пиши. Время пошлО.


Andy BitOff   (2004-06-18 01:29:00) [7]

>Алекс А   (13.06.04 01:11) Старт!!!

Прошло ПЯТЬдней !!!!!!!!!!!!!!!!!!!!!!!

>Алекс А   (18.06.04 01:16) [31]
Функция почему то не действует.


Да за это время можно было свой ListBox написать с нуля.
Точно у парня геморрой.


Алекс А   (2004-06-18 01:19:00) [8]


> Palladin ©   (14.06.04 01:26) [6]
> FileSizeByName

В каком модуле находится FileSizeByName ? Нашё только FileSize .


Алекс А   (2004-06-18 01:16:00) [9]


> Fay ©   (15.06.04 04:31) [27]


Функция почему то не действует. Длина файла остаётся неизменной. В чём тут может быть дело ? Вроде всё просто, а не работает.


function CutFileLength(aFileName : PAnsiChar; aNewFileSize : Integer): Boolean;
var
 h : DWORD;
begin
 h := CreateFile(aFileName,  GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0);
 if h = DWORD(-1) then begin
    Result := False;
    RaiseLastOSError
 end else begin
    SetFilePointer(
      h,
      aNewFileSize, // NEW_FILESIZE, // Сам задашь
      nil,
      FILE_BEGIN);
    CloseHandle(h);
    Result := True;
  end;
end;


ПсихЪ   (2004-06-15 10:58:00) [10]

Чё вы все тупите. Чел-то, понятно, просто стебётся над вами, а вы и поддаётесь сей мерзкой провакации.
С тем же успехом могли бы развести флэйм на предмет "Неужели в Великой Делпхи нет функции для автоматического написания программ волей мысли? ЧТобы запустил прогу, подумал "ХАЧУ ВОРД ХП", и у тебя на форме тут же выскочили все необходимые компоненты".

To Алекс А:
Если ты действительно такой ленивый, что тебе влом предварительно ознакомится с документацией, посмотреть примеры и стетьи в Интернете, и ты вместо этого идёшь и постишь на форуме какую-то глупость, то нафига ты тогда вообще программируешь?
Завтра ты придёшь и спросишь "А как мне поменять цвет текста в TMemo?". Хорошь тупить, читай доки и смотри примеры, прежде чем постить на форуме.
Закрывай тему, к чёртовой матери!


Плохиш   (2004-06-15 10:48:00) [11]

>Fay ©   (15.06.04 04:31) [27]
>Mim1 ©   (15.06.04 10:32) [28]

Стандартный способ получения кода в действии :-(

Вопрос - наезд - грубый наезд - "делфи дерьмо" --> готовый код и думалку включать не надо.
Одно радует конкурентов у нас больще не становиться ;-)


Mim1   (2004-06-15 10:32:00) [12]

f:tfilestream;
s:string;
begin
 ListBox1.Items.LoadFromFile( 'test.txt' );
 f := tfilestream.create('test.txt' , fmCreate);
 try
    s := ListBox1.Items.text;
    f.write(pointer(s)^,length(s)-2);
 finally
   freeandnil(f);
 end;  
end;


Fay   (2004-06-15 04:31:00) [13]

var
 h : DWORD;
begin
 h := CrateFile('c:\бут.ини', GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0);
 if h = DWORD(-1) then
     RaiseLastOSError;
 else
   begin
     SetFilePointer(
       h,
       NEW_FILESIZE, // Сам задашь
       nil,
       FILE_BEGIN);
     CloseHandle(h);
   end;
end;


Алекс А   (2004-06-15 04:13:00) [14]


> KilkennyCat ©   (15.06.04 03:52) [25]
> и если их всего десяток, то можно было бы и посмотреть....


Ну, так и чего ? Стандартной функции несуществует вообще ? Или я не нашёл просто ?


KilkennyCat   (2004-06-15 03:52:00) [15]

и если их всего десяток, то можно было бы и посмотреть....


KilkennyCat   (2004-06-15 03:52:00) [16]

ну есть такая, только не для текстовых,
еще
> Palladin ©   (14.06.04 09:49) [16]

указал

Truncate


Алекс А   (2004-06-15 03:43:00) [17]


> KilkennyCat ©   (15.06.04 03:34) [22]
>
> > Алекс А   (15.06.04 03:27) [21]
>
>
> Более того. Все вычисления процессором делаются при помощи
> нолика и единички.
> Что имеется в виду "Готовая функция"? делающая требуемое
> за пару тактов? с минимумом геморроя? RemBK(filename)? Чушь.
> Можно тогда требовать готовую функцию для каждой проблемы.


Можно. Ибо файловых функций всего-то десяток от силы. И не иметь стандартной функции для изменения длиный файла - бред.


KilkennyCat   (2004-06-15 03:34:00) [18]


> Алекс А   (15.06.04 03:27) [21]


Более того. Все вычисления процессором делаются при помощи нолика и единички.
Что имеется в виду "Готовая функция"? делающая требуемое за пару тактов? с минимумом геморроя? RemBK(filename)? Чушь. Можно тогда требовать готовую функцию для каждой проблемы. Или целиком для программы.


Алекс А   (2004-06-15 03:27:00) [19]


> KilkennyCat ©   (15.06.04 03:23) [20]
>
> > Алекс А   (15.06.04 03:21) [19]
>
> эта функция не только записывает данные в файл. Она записывает
> определенный блок данных. Определите его размер меньше на
> два байта - и все.

Геморойно. Считать блок, определить длину, уменьшить, записать блок. Неужели в Дельфи несуществует готовых функций ?


KilkennyCat   (2004-06-15 03:23:00) [20]


> Алекс А   (15.06.04 03:21) [19]


эта функция не только записывает данные в файл. Она записывает определенный блок данных. Определите его размер меньше на два байта - и все.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо