Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi 2

Автор: Butcher
Дата сообщения: 21.02.2007 08:51
Может, кто-то работает с OpenOffice? Бьюсь третий день с присвоением массива диапазону ячеек. Судя по накопанному в интернете, нужно делать так

Код:
var Matrix: Variant;
begin
Matrix:= VarArrayCreate([1,2,1,2],varVariant);
Matrix[1,1]:= 'Бла-бла';
...
Matrix[2,2]:= 1;
ActiveSheet.getCellRangeByName('A1:B2').SetDataArray(Matrix);
end;
Автор: OOD
Дата сообщения: 21.02.2007 14:33
Люди добрые подскажите :
Есть таймер в нем нужно значение из TEdit поместить в интовую переменную , и далее эту переменную установить как интервал в таймере


Вопрос как поместить значение из TEdit в интовую переменную чтобы можно можно было значение введение в TEdit установить в интервале таймера
пробую вот так
Timer1.Interval:=StrToInt(интовая_переменная);

Не получается

Подскажите может можно как-то по другому поместить значение из Edit в интервал таймера?

Автор: RomanTim
Дата сообщения: 21.02.2007 15:35
OOD
Timer1.Interval:=StrToInt(Edit1.Text);
Автор: Betorgon
Дата сообщения: 21.02.2007 18:18
Где можно найти исходник простенького графического редактора, а то нужен срочно, а не занимался этим давно?
Автор: oan42
Дата сообщения: 21.02.2007 21:09
Betorgon
http://www.codeaccelerate.com/drawing_engine.html
см. папку MiniCAD в скачанных исходниках.
Автор: andead
Дата сообщения: 22.02.2007 20:41
как TStringList сохранить в кодировке UTF-8? или что использовать для этого? в TTntStringList не понял как это делать
Автор: Zergboy
Дата сообщения: 23.02.2007 00:00

Цитата:
Где можно найти исходник простенького графического редактора, а то нужен срочно, а не занимался этим давно?

Если совсем простенький - посмотри, может это пойдет
h--tp://delphiworld.narod.ru/base/graphic_editor.html
Автор: vshersh
Дата сообщения: 23.02.2007 08:54
andead
По-ходу только руками

Цитата:

procedure TForm1.FormCreate(Sender: TObject);
var
_StrList: TStrings;
begin
_StrList := TStringList.Create;
try
_StrList.Add('Поздравляю всех с праздником защитника отечества!');
_StrList.Add('Мужики! С 23-м февраля! Всех благ!');
_StrList.Text := AnsiToUtf8(_StrList.Text);
_StrList.SaveToFile('c:\congratulations_utf8.txt');
finally
_StrList.Free;
end;
end;
Автор: SERGE_BLIZNUK
Дата сообщения: 23.02.2007 11:54
vshersh
Пост - СУПЕР!!!!!! Спасибо!


[offtop]
С праздником, мужики!!! Мирного неба,крепкого здоровья, удачи, любви, боевых подруг и благополучия! И чтобы проблемы были только с вопросами по Delphi ))
Автор: andead
Дата сообщения: 23.02.2007 12:47
SERGE_BLIZNUK
бесполезно, в ANSI сохраняет с вопросиками вместо неопознанных символов
Автор: vshersh
Дата сообщения: 23.02.2007 12:52
andead
а ты уверен, что на входе не "вопросики"?
Вобще лучше приведи код и укажи что сохраняешь и под какой локалью работает приложение.
Автор: SERGE_BLIZNUK
Дата сообщения: 23.02.2007 16:08
andead
ну, вообще-то, когдая я говорил, что пост - супер, я имел в виду, как отвечая по делу можно одновременно всех с праздником поздравить... ;-))

теперь про UTF8...
попробовал у себя. Delphi5. функции AnsiToUtf8 — не нашёл... ;-((
зато в JclUnicode нашел WideStringToUTF8
попробуйте
_StrList.Text := WideStringToUTF8(_StrList.Text);

все отработало (был создан файл congratulations_utf8.txt 153 байта длиной)

И, кстати, согласен с vshersh -

Цитата:
Вобще лучше приведи код и укажи что сохраняешь и под какой локалью работает приложение.
...

Удачи.
Автор: andead
Дата сообщения: 23.02.2007 21:44

Цитата:
Вобще лучше приведи код и укажи что сохраняешь

код:

Код: ...
var
WorkFile: TStringList;
begin
WorkFile := TStringList.Create;
WorkFile.Add('صرسثضرطثخىرط');
WorkFile.Text := AnsiToUTF8(WorkFile.Text);
WorkFile.SaveToFile('D:\1.txt');
WorkFile.Free;
end;
Автор: SERGE_BLIZNUK
Дата сообщения: 24.02.2007 09:17
andead

Цитата:
форум съел (поменял) фразу на арабском, но смысл думаю понятен
[more]<html>
<body>
&#1589;&#1585;&#1587;&#1579;&#1590;&#1585;&#1591;&#1579;&#1582;&#1609;&#1585;&#1591;
</body>
</html>[/more]
у.... как всё запущено... Так вроде бы TStringList не поддерживает unicode...
function Add(const S: string): Integer; override;
- а разве в обычной строке можно записывать двухбайтные символы?
имхо, Вам нужен класс, построенный на основе WideString !!!!
Автор: andead
Дата сообщения: 24.02.2007 11:18

Цитата:
Так вроде бы TStringList не поддерживает unicode..

точно

попробовал с Jedi:


Код: uses ..., JclWideStrings, JclUnicode;
...
var
WorkFile: TWideStringList;
begin
WorkFile := TWideStringList.Create;
WorkFile.Add('Hello World');
WorkFile.Text := WideStringToUTF8(WorkFile.Text);
WorkFile.SaveToFile('D:\1.txt');
WorkFile.Free;
end;
Автор: RostY
Дата сообщения: 24.02.2007 16:37
в DRKB нашел такое:
Загрузка в мемо уникодового файла:
[more]
procedure LoadUnicodeFile(const filename: string; strings: TStrings);

procedure SwapWideChars(p: PWideChar);
begin
while p^ <> #0000 do
begin
p^ := WideChar(Swap(Word(p^)));
Inc(p);
end;
end;

var
ms: TMemoryStream;
wc: WideChar;
pWc: PWideChar;
begin
ms := TMemoryStream.Create;
try
ms.LoadFromFile(filename);
ms.Seek(0, soFromend);
wc := #0000;
ms.Write(wc, sizeof(wc));
pWC := ms.Memory;
if pWc^ = #$FEFF then {normal byte order mark}
Inc(pWc)
else if pWc^ = #$FFFE then
begin {byte order is big-endian}
SwapWideChars(pWc);
Inc(pWc);
end
else
; {no byte order mark}
strings.Text := WideChartoString(pWc);
finally
ms.free;
end;
end;

Использовать

LoadUnicodeFile(filename, memo1.lines);
[/more]

Добавлено:
еще:
StringToWideChar Преобразовывает строку формата ANSI в Unicode-строку.

WideCharLenToString Преобразовывает указанное количество символов Unicode-строки в ANSI строку.

WideCharLenToStrVar Преобразовывает заданное количество символов Unicode-строки в ANSI формат и копирует результат в указанную переменную.

WideCharToString Преобразовывает длинную строку Unicode в ANSI строку.

WideCharLenToStrVar Преобразовывает строку формата Unicode в ANSI-формат и копирует результирующую строку в указанную переменную.


Добавлено:
и т.д... Скачай себе chm-ку с www.drkb.ru и возьми поиск по слову unicode
Автор: RomanTim
Дата сообщения: 24.02.2007 16:43
andead
WideStringList сохраняет все свое содержимое в юникоде, а как оно туда попадает - не существенно, все равно приводится к двухбайтному представлению.
Для исходной ANSI-текста работает код vshersh.
Функция AnsiToUTF8 описана в System в D10 так: Result := Utf8Encode(S). Utf8Encode на вход принимает WideString - то есть происходит неявное перекодирование из ANSI в юникод по текущей локали.
Соответственно для исходного юникод-текста можно вызывать сразу ее, но результат помещать в обычный TStringList и его уже сохранять на диск
Автор: svs123456789
Дата сообщения: 24.02.2007 22:01
при использовании TFrame очень не хватает событий создания и разрушения
чтобы инициализировать настройки во фрейме
(по аналогии с методами FormCreate и особенно FormDestroy )
использую
type
TFrame1 = class(TFrame)
public
procedure Init(DataSet: TDataSet);
end;
и вызываю в методе FormCreate у формы-владелбца фрейма метод Init

а как порекомендаете например сохранять настройки-состояние фрейма?
Автор: RomanTim
Дата сообщения: 25.02.2007 09:13
svs123456789
Перекрой деструктор:
Код:
TFrame1 = class(TFrame)
public
procedure Init(DataSet: TDataSet);
destructor Destroy; override;
end;
...
destructor TFrame1.Destroy;
begin
// твой код
inherited;
end;
Автор: svs123456789
Дата сообщения: 25.02.2007 12:47
RomanTim
спасибо!
а как перекрыть конструктор - ведь мне надо передавать параметры, а создание вызывает ошибку
constructor TFrameDEdit.Create(DataSet: TDataSet);
begin
// TODO : мой код
inherited;
end;

т.к. отличаются параметры от constructor TCustomFrame.Create(AOwner: TComponent);
Автор: RomanTim
Дата сообщения: 25.02.2007 22:46
svs123456789
Конструктор по-моему перекрыть не удастся - свой то написать можно, но это не поможет, так как VCL вызывает создание компонентов формы через Create(AOwner: TComponent).
Придется использовать вариант с Init
Автор: Arvur
Дата сообщения: 26.02.2007 00:14
svs123456789

Цитата:
а как перекрыть конструктор - ведь мне надо передавать параметры, а создание вызывает ошибку

Посмотри на директиву reintroduce - для форм в таком случае помогает.
А насчет создания RomanTim прав - создавать придется ручками, благо ничего сложного.
Автор: xitsmex
Дата сообщения: 26.02.2007 23:24

Цитата:
при использовании TFrame очень не хватает событий создания и разрушения
чтобы инициализировать настройки во фрейме
(по аналогии с методами FormCreate и особенно FormDestroy )
использую
type
TFrame1 = class(TFrame)
public
procedure Init(DataSet: TDataSet);
end;
и вызываю в методе FormCreate у формы-владелбца фрейма метод Init

По аналогии с FormCreate и FormDestroy (а точнее, они отсюда и вызываются):
procedure AfterConstruction; override;
procedure BeforeDestruction; override;
Обе процедуры определены для любого TObject, значит, и для TFrame.

Цитата:

а как порекомендаете например сохранять настройки-состояние фрейма?

Настройки состояния лучше всего, имхо, хранить именно там, где предполагали борландовцы - в свойствах. А вот DataSet в конструкторе, имхо, не очень хорошо. Лучше сделать свойством, а все хорошее делать на SetDataSet.
Автор: SergSt88
Дата сообщения: 26.02.2007 23:43
Ребята, кому не трудно, пожалуйста, помогите написать игру в Delphi Тетрис с использованием ООП. У меня есть кое-какие наброски
Автор: RomanTim
Дата сообщения: 27.02.2007 07:02
xitsmex

Цитата:
Настройки состояния лучше всего, имхо, хранить именно там, где предполагали борландовцы - в свойствах. А вот DataSet в конструкторе, имхо, не очень хорошо. Лучше сделать свойством, а все хорошее делать на SetDataSet.

Свойства вообще-то предполагают не столько хранение, сколько необходимость в определенных действиях при задании-получении значения, а здесь классу датасет нужен на всем времени жизни, причем задается он только один раз - самое то через параметр конструктора задать.
Автор: SERGE_BLIZNUK
Дата сообщения: 27.02.2007 10:03
ребята вопрос про Delphi - но на грани оффтопика...
Если что - прошу отвечать в ПМ!

Увидел случайной в каталоге
периодическое издание "ПРОГРАММИРОВАНИЕ DELPHI ДЛЯ ПРОФЕССИОНАЛОВ".
Ежемесячный журнал.

вопрос - кто-нибудь сталкивался с таким изданием? Если да - то кто издаёт журнал(выходные данные) и какие впечатления от него?
Автор: Tartrout
Дата сообщения: 27.02.2007 18:20
Коллеги,

Просветите, есть ли в дельфях overloaded assignment operator (скажем, для структур. Или хотя бы для классов). То что его нет в списке операторов, разрешенных к перегрузу, я уже увидел. Но, может быть, есть какой-нибудь обходной путь? Типа через copy constructor какой-нибудь? Что-то у меня ничего не получилось.

Как все чудесно на C++... Увы, не всегда можно писать на том языке, на котором хочешь...

Заранее благодарен.
Автор: vshersh
Дата сообщения: 27.02.2007 20:22
Приветствую Tartrout!
Прочитал - и прослезился Как мне самому этого не хватает...
В Делфи операторы не перегружаются... Конструктора копий тоже не бывает, т.к. все объекты в делфи создаются в куче, а не в стеке...
Автор: RomanTim
Дата сообщения: 27.02.2007 23:10
Tartrout
Для своих классов можно сделать методы Assign и Clone


Цитата:
Как все чудесно на C++

Ну с этим - на вкус и цвет...
Автор: OdesitVadim
Дата сообщения: 28.02.2007 01:05
Tartrout
vshersh
Ну почему это нет? начиная с 2005 для структур можно перегружать операторы. даже примерчик есть в демкам для работы с комплексными числами.
Для классов такая возможность есть долько в Delphi.NET

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Событие STFilter(DBGridEh) ???


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.