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