![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Cледующий код дописывает к файлу перевод строки. Как от этого изб [D7, WinME]
Алекс А © (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]
эта функция не только записывает данные в файл. Она записывает определенный блок данных. Определите его размер меньше на два байта - и все.