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

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

Не получается писать в файл. [D7, WinXP]


Страницы:   1 2

BigBadMutuh ©   (2003-01-17 19:04:00) 

Нужно записать в файл большой объём текста (>255 символов). WideString и AnsiString выдают ошибку. Попробовал разбить текст на части:

procedure TMain.HTML1Click(Sender: TObject);
var
C: integer;
F: TFileStream;
S: String;
begin
F:=TFileStream.Create("index.html",fmCreate);
F.Seek(0,soFromBeginning);
S:="Первый кусок текста";
F.Write(S,Length(S));
S:="Второй кусок текста";
F.Write(S,Length(S));
F.Free;
end;

Но даже если записывать только 1 слово, оно пишется в непонятной кодировке.
Вопросы:
1)Как можно записать сразу большой текст, не разбивая его на части?
2)Почему возникает проблема с кодировкой?


Батник   (2003-01-20 04:48:00) [1]

Почитай про тип STRING в Delphi - это не то что было в Pascal-e - это тип с управляемым временем жизни.

попробуй
F.Writebuffer(S[1],Length(S));




diks   (2003-01-20 01:39:00) [2]

1: Почему тебе из файла не читается?
2: Кусков может и много но надежно!
3:i: TextFile;
s: string;
begin
s := StringOfChar("A", 600);
AssignFile(i, "c:\1.html");
Writeln(i, S);
CloseFile(i);
end;
Да побей ты его!


Anatoly Podgoretsky   (2003-01-20 01:21:00) [3]

А если у тебя 3 гб?


BigBadMutuh   (2003-01-19 23:45:00) [4]

Умирать мне пока рано...

String это динамически распределяемые масивы символов, тип AnsiString максимальная длина которых ограничивается только наличием памяти.


gsu   (2003-01-18 13:42:00) [5]

так какого размера string ?
смотри, а то так и умрешь неучем (-:|~


BigBadMutuh   (2003-01-18 13:36:00) [6]

Без научного втыка никак. Также как и без теории. :)
Ответы на свои вопросы я получил. Прогу доделал. Всем спасибо.


Anatoly Podgoretsky   (2003-01-18 12:22:00) [7]

Методом научного втыка :-)
Ну ну


BigBadMutuh   (2003-01-18 11:51:00) [8]


String types
Type Maximum length Memory required Used for
ShortString 255 characters 2 to 256 bytes backward compatibility
AnsiString ~2^31 characters 4 bytes to 2GB 8-bit (ANSI) characters, DBCS ANSI, MBCS ANSI, etc.
WideString ~2^30 characters 4 bytes to 2GB Unicode characters; multi-user servers and multi-language applications
AnsiString, sometimes called the long string, is the preferred type for most purposes.

Вот это написано в help"е. Я это видел и видимо неправильно понял. При попытке использовать String, AnsiString или WideString Delphi очень громко ругалась, что я пытаюсь в неё запихнуть более 255 символов.
А про одинаковые символы я написал имея ввиду вот это
s := StringOfChar("A", 600);.

2AnatolyPodgoretsky
Книжка умная у меня есть. Читаю пока. А вы наверно перед тем как взяться за написание программ прочитали их штук 10. Помоему легче всего понять чтото на практике.


TTCustomDelphiMaster   (2003-01-18 10:29:00) [9]

Ну вы блин даете...


mate   (2003-01-18 10:13:00) [10]

> s := "Строка длинной до 255 символов" + "Строка длинной до 255 символов";

Ты уверен что это будет работать?
Я делал S:=...+...+..+...
при этом length(...+...+..+...)>>255
а затем
ShellExecute(..,open,Pchar(ss),...)
то появлялась ошибка о размере String не больше 255.


Anatoly Podgoretsky   (2003-01-18 09:39:00) [11]

Не пора ли временно не "программировать" а заняться чтением книжек, лучше для начального возраста, потом посерьезнее, если пройдешь первый этап.


TTCustomDelphiMaster   (2003-01-18 09:24:00) [12]


> В этом случае Дельфя пожалуется, что переменная не может
> содержать более 255 символов.


Не строковая переменная, а строковая константа. Если ты вставляешь текст в программу то делай так
s := "Строка длинной до 255 символов" + "Строка длинной до 255 символов";
Но лучше не извращайся, а читай из текст из файла.


Юрий Зотов   (2003-01-18 06:46:00) [13]

> BigBadMutuh

Может... это... лучше книжки почитать, а не спорить? А то Вы тут, извините, ТАКОГО нагородили, что просто смешно. Жванецкий отдыхает.


oomneeq   (2003-01-18 03:21:00) [14]

>Я про стринг и говорю. Он врод не может содержать текст (заисключением одинаковых символов) длиннее чем 255

Это круто!
"заисключением одинаковых символов"
Это круто!

Где такое вычитал?

Я без злобы,
Но почитывай хотя бы хэлп. Это даже быстрей сделать чем в форум вопрос запостить.

Успехов тебе!

но "заисключением одинаковых символов" - Это круто!


Eraser@YYY   (2003-01-18 01:07:00) [15]

Ограничиваются по длине только паскаль-строки. String - логический тип зависит от директивы $H. По умолчанию String это динамически распределяемые масивы символов, тип AnsiString максимальная длина которых ограничивается только наличием памяти.


BigBadMutuh   (2003-01-17 23:34:00) [16]

Я про стринг и говорю. Он врод не может содержать текст (заисключением одинаковых символов) длиннее чем 255 символов. Пробовал копировать туда больше - Дельфя ругается ;(. Впрочем уже сделал так, как советовал gsu.


E_Dimon   (2003-01-17 23:21:00) [17]

>В этом случае Дельфя пожалуется, что переменная не может содержать более 255 символов.
Да по-моему и String подойдет или PChar.

S:=Copy(.......)


BigBadMutuh   (2003-01-17 22:57:00) [18]

gsu, твой код работает, но очень хочется грузить весь текст одним куском.


BigBadMutuh   (2003-01-17 22:55:00) [19]

В этом случае Дельфя пожалуется, что переменная не может содержать более 255 символов.


TTCustomDelphiMaster   (2003-01-17 22:50:00) [20]

А че трудно присвоить переменной s текст?


Страницы:   1 2

Наверх

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