Форум: "Начинающим";
Текущий архив: 2008.03.09;
Скачать: [xml.tar.bz2];
Внизстроки.... Найти похожие ветки
← →
Steep (2008-02-11 23:06) [0]суть такая берем первый Memo (текст примерно такой):
Linkin Park, Era, Ария, Evanescence, Limp Bizkit, DMX, 50 Cent, Slipknot, Nightwish,
Rammstein, Enya, Papa Roach, Король и Шут, Blink 182, Apocaliptica, Benny Benassi,
Alizee, Nickelback, Nirvana, Powerman 5000, The Black Eyed Peace, Наив,
Cranberries, Moby, Ludacris, Tokia Hotel, Three Days Grace, Nelly Furtado, Metallica,
HIM, Prodigy, Brainstorm, Tiga, KoRn, Green Day, 666, Город 312, Roxette, Jay-Z, Rob
Zombie, Flipsyde, Justin Timberlake, Сплин, Дельфин, Timbaland, placebo, zdob si
zdub, Paul Van Dyk, all american rejects, Guano Apes, Lordi, Lost prophets, Rihanna,
Global Deejays, Die Apokalyptischen Reiter, Пилигрим, Легалайз, Morcheeba, Akon,
Pink, Bob Sinkler, Gregorian, The Killers, Fort Minor
потом ищем до запятой копируем в Memo2 вроде бы все работает
НО почемуто после некоторых названии в Memo2 появляются пустые строки...
например после: Nightwish, Benny Benassi, Наив, Metallica и тд.
код сканирование текста
procedure TForm1.Button1Click(Sender: TObject);
var
AllText: string;
x: boolean;
tmp: string;
tmppos: integer;
begin
x := false;
AllText := Memo1.Text;
repeat
tmppos := pos(", ", AllText);
if tmppos<>0 then
begin
//Showmessage(AllText);
tmp := copy(AllText, 1, tmppos-1 );
//Showmessage("tmp: " + tmp);
Memo2.Lines.Append( tmp );
delete(AllText, 1, tmppos+1 );
//Showmessage(AllText);
end
else x := true;
until x
end;
как недопустить их появления? в чем может быть ошибка?
← →
antonn © (2008-02-11 23:15) [1]удаляй символы перевода строки #13#10 в Memo1.Text
← →
Steep (2008-02-11 23:20) [2]хм... а как их искать и удалять?
ведь pos("#13", AllText) так точно не задаш... (точнее задаш но не найдет....)
← →
{RASkov} © (2008-02-11 23:21) [3]> [2] Steep (11.02.08 23:20)
begin
x := false;
AllText := StringReplace(Memo1.Text, #13#10, "", [rfReplaceAll]);
← →
antonn © (2008-02-11 23:21) [4]pos(#13,"стриииинг")
а так? :)
← →
Steep (2008-02-11 23:24) [5]
> {RASkov} ©
круто... эх... как стать таким умным :)
> antonn ©
хм просто и сердито... но вариант от {RASkov} мне понравился больше :) (хотя учту на будущее)
← →
Игорь Шевченко © (2008-02-11 23:28) [6]Лови:
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Memo2: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure StrBreakApart(const Source, Delimeter: string; Parts: TStrings);
var
curPos: Integer;
curStr: string;
begin
Parts.Clear;
if Length(Source) = 0 then
Exit;
Parts.BeginUpdate;
try
CurStr:= Source;
repeat
CurPos:= AnsiPos(Delimeter, CurStr);
if CurPos > 0 then begin
Parts.Add(Copy(CurStr, 1, Pred(CurPos)));
CurStr:= Copy(CurStr, CurPos+Length(Delimeter),
Length(CurStr)-CurPos-Length(Delimeter)+1);
end else
Parts.Add(CurStr);
until CurPos=0;
finally
Parts.EndUpdate;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
S: TStrings;
begin
S := TstringList.Create;
try
StrBreakApart(StringReplace(Memo1.Text, #13#10, "", [rfReplaceAll]), ", ",
S);
Memo2.Lines.Assign(S);
finally
S.Free;
end;
end;
end.
← →
Steep (2008-02-11 23:29) [7]я предполагал что там зарыты скрытые символы, но как их выловить я что-то не придумал...
хотел переводить строку на отдельные символы и смотреть что там...
токо вот как это делать не помню - искал как переводить строки в массив из char и искать небуквенные символы....
← →
{RASkov} © (2008-02-11 23:32) [8]Из [6]
> procedure TForm1.Button1Click(Sender: TObject);
> var
> S: TStrings;
Не нужен :)StrBreakApart(StringReplace(Memo1.Text, #13#10, "", [rfReplaceAll]), ", ", Memo2.Lines);
← →
{RASkov} © (2008-02-11 23:35) [9]> [7] Steep (11.02.08 23:29)
> искал как переводить строки в массив из char
Они уже) почти так... к каждому символу в String есть доступ по его индексу....
> и искать небуквенные символы....
Легко:
if Stroka[i]<>Буква then Символ с индексом i в строке не буквенный....
← →
Игорь Шевченко © (2008-02-11 23:36) [10]{RASkov} © (11.02.08 23:32) [8]
Это домашнее задание автору.
← →
antonn © (2008-02-11 23:38) [11]
> хм просто и сердито... но вариант от {RASkov} мне понравился
> больше :) (хотя учту на будущее)
мне сейчас лень проверять, а что будет если не #13#10, а #10#13? :)
← →
Steep (2008-02-11 23:41) [12]
> Игорь Шевченко ©
эээээ....
теперь я чувствую полный ламмером......
вот что поянл пишем процедуру
StrBreakApart(const Source, Delimeter: string; Parts: TStrings);
где
Source исходная строка
Delimeter то что удаляем
Parts -это то что возвращаем?
зачем нужны и что делают
Parts.BeginUpdate;
CurPos:= AnsiPos(Delimeter, CurStr); (это поиск строки в подстроке вроде но зачем этот ansi?)
Parts.Add(Copy(CurStr, 1, Pred(CurPos))) что такое Pred?
Parts.EndUpdate;
← →
Anatoly Podgoretsky © (2008-02-11 23:43) [13]> antonn (11.02.2008 23:38:11) [11]
Таких бить палкой
← →
{RASkov} © (2008-02-11 23:44) [14]> [12] Steep (11.02.08 23:41)
> Delimeter то что удаляем
Это разделитель вообще-то)
> зачем нужны и что делают
Хм.... вот здесь
> теперь я чувствую полный ламмером......
ты прав :(
:)
Ничего нового Игорь не написал, все есть в F1 т.е. - хэлпе...
← →
Игорь Шевченко © (2008-02-11 23:45) [15]Steep (11.02.08 23:41) [12]
> Source исходная строка
> Delimeter то что удаляем
> Parts -это то что возвращаем?
{
Преобразование строки с разделителями в список строк.
Параметры:
Source - исходная строка.
Delimiter - строка-разделитель.
Parts - список строк, заполняемый функцией. Создается и уничтожается
вызывающей функцией.
}
Parts.BeginUpdate - в случае, как предложил {RASkov} © это вызовет перерисовку Memo2 только один раз, а не на каждое изменение.
> CurPos:= AnsiPos(Delimeter, CurStr); (это поиск строки в
> подстроке вроде но зачем этот ansi?)
> Parts.Add(Copy(CurStr, 1, Pred(CurPos))) что такое Pred?
>
AnsiPos - та же самая Pos, но с учетом национальных букв.
Pred - открываем любой учебник по языку паскаль и начинаем вдумчиво читать. Узнаем, что это предыдущее значение от аргумента, а Succ - последующее.
← →
Steep (2008-02-11 23:58) [16]
> Это домашнее задание автору.
задание вроде понял =)
еще понял что все таки мы в процедуре сразу ищем ", " и кидаем слова в список который потом отдаем во второе мемо
> мне сейчас лень проверять, а что будет если не #13#10, а
> #10#13? :)
вроде после #13 (вроде ентер ) может идти #10 (символ каретки вроде как), а наоборот я не уверен
> Anatoly Podgoretsky ©
зачем так жестко?
> Это разделитель вообще-то)
угу понял...
> > теперь я чувствую полный ламмером......
> ты прав :(
>:)
>Ничего нового Игорь не написал, все есть в F1 т.е. - хэлпе...
угу я думаю я хоть что начал понимать в итоге чувствую что все что я знаю это ничто по сравнению с тем что есть.... чето как то и желание программировать отпадать начинает....
Насчет F1 есть... токо как узнать есть ли команды типа StringReplace(Memo1.Text, #13#10, "", [rfReplaceAll]);
с которыми бьешся бьешся а в итоге оказывается что это было....
я понимаю по справке можно посмотреть у известной команды параметры - и если не обчень понятно пример.... а как узнать что там вобще есть.....
← →
antonn © (2008-02-11 23:59) [17]
> Anatoly Podgoretsky © (11.02.08 23:43) [13]
>
> > antonn (11.02.2008 23:38:11) [11]
>
> Таких бить палкой
>
нет, бить палкой тех программеров, которые не учли вольный ввод пользователя. Не имхо. Для мемо по-барабану как идет перенос строки и перевод каретки.
← →
{RASkov} © (2008-02-12 00:02) [18]> Steep
Кстати попробуй еще вот такой вариант:procedure TForm1.Button2Click(Sender: TObject);
var AllText: string;
begin
AllText := StringReplace(Memo1.Text, #13#10, "", [rfReplaceAll]);
Memo2.Lines.Text := StringReplace(AllText, ", ", #13#10, [rfReplaceAll]);
end;
Может подойдет? :)
← →
ketmar © (2008-02-12 00:03) [19]>[17] antonn © (2008-02-11 23:59:00)
бить палкой тех идиотов, которые делают разделение строк как #10#13. эти символы пользователь точно не вводит руками. это только кривая софтина может такое родить. автора такой софтины кастрировать, и вывесить на фонарь — для вразумления остальных.
---
Understanding is not required. Only obedience.
← →
Steep (2008-02-12 00:04) [20]
> Игорь Шевченко ©
спасибо - хоть что то я начинаю понимать....
← →
ketmar © (2008-02-12 00:04) [21]интересно, почему никто не вспомнил про TStrings.CommaText?
---
Understanding is not required. Only obedience.
← →
Steep (2008-02-12 00:11) [22]
> Может подойдет? :)
ээээ.... что-то я понимаю что чем мудренее проблема тем решенее лучше если оно проще.....
← →
Steep (2008-02-12 00:21) [23]теперь зародилась несколько другая проблема... при копировании, а затем вставки вместо русского текста нечитаемый набор символов...
нужно исползовать юникод? или можно както скопировать нормально?
← →
Игорь Шевченко © (2008-02-12 00:26) [24]
> теперь зародилась несколько другая проблема... при копировании,
> а затем вставки вместо русского текста нечитаемый набор
> символов...
Клавиатуру на русский переключи перед копированием :)
← →
Johnmen © (2008-02-12 00:27) [25]Зачем использовать аффигенно тормознутые ф-ии, если можно написать быстрый однопроходный код?
Типа этого:const
delim = ",";
ignorechars : set of char =[ #13,#10,#32];
s:=Memo.Text;
len:=Length(s);
ibeg:=1; i:=ibeg;
while i<=len do begin;
while (ibeg<=len) and ((s[ibeg] in ignorechars) or (s[ibeg]=delim)) do Inc(ibeg);
i:=ibeg;
while (i<=len) and (s[i]<>",") do Inc(i);
iend:=i-1;
while (iend>1) and (s[iend] in ignorechars) do Dec(iend);
Memo.Lines.Add(Copy(s,ibeg,iend-ibeg+1));
Inc(i);
ibeg:=i;
end;
← →
Johnmen © (2008-02-12 00:28) [26]
> ketmar © (12.02.08 00:04) [21]
> интересно, почему никто не вспомнил про TStrings.CommaText?
Потому, что и пробел является неотменным разделителем.
← →
Steep (2008-02-12 00:34) [27]
> Зачем использовать аффигенно тормознутые ф-ии, если можно
> написать быстрый однопроходный код?
потомучто у меня не миллионы слов - а маленький код понять легче - ну если не понять то хотя бы меньше кода....
> Клавиатуру на русский переключи перед копированием :)
помогло... неужели програмно переключать чтобы работало наверняка?
← →
Johnmen © (2008-02-12 00:36) [28]
> потомучто у меня не миллионы слов - а маленький код понять
> легче - ну если не понять то хотя бы меньше кода....
Если ты так реально считаешь, то ты не станешь программистом.
Да тебе, как я уже понял, и не надо...
← →
ketmar © (2008-02-12 00:38) [29]>[27] Steep (2008-02-12 00:34:00)
>неужели програмно переключать чтобы работало наверняка?
мегебаянЪ.
мне вот интересно, почему 99.9% вопрошающих про «кракозяблы в буфере обмена» никогда не задумываются, какое именно магическое действие совершает переключение раскладки, и как можно добиться того же, но раскладку не дёргать?
---
Understanding is not required. Only obedience.
← →
ketmar © (2008-02-12 00:39) [30]>[26] Johnmen © (2008-02-12 00:28:00)
хм. а, ну да. строки с пробелами кавычить надо. каюсь, забыл.
---
Understanding is not required. Only obedience.
← →
Игорь Шевченко © (2008-02-12 00:45) [31]ketmar © (12.02.08 00:38) [29]
> и как можно добиться того же, но раскладку не дёргать?
Научи, а ? Я на самом деле не знаю "как добиться того же", чтобы из любых Delphi-ских Editов по стандартным командам копирования добиться вставки в юникодные программы корректного русского текста. Я серьезно.
← →
Steep (2008-02-12 00:58) [32]вот нашел....
procedure BufferToClipboard(Buffer: WideString);
var WideBuffer: WideString;
BuffSize: Cardinal;
Data: THandle;
DataPtr: Pointer;
begin
if Buffer <> "" then begin
WideBuffer := Buffer;
BuffSize := length(Buffer) * SizeOf(WideChar);
Data := GlobalAlloc(GMEM_MOVEABLE+GMEM_DDESHARE+GMEM_ZEROINIT, BuffSize + 2);
try
DataPtr := GlobalLock(Data);
try
Move(PWideChar(WideBuffer)^, Pointer(Cardinal(DataPtr))^, BuffSize);
finally
GlobalUnlock(Data);
end;
Clipboard.SetAsHandle(CF_UNICODETEXT, Data);
except
GlobalFree(Data);
raise;
end;
end;
end;
вызов процедурыBufferToClipboard(" hello world");
← →
Игорь Шевченко © (2008-02-12 01:02) [33]Steep (12.02.08 00:58) [32]
Это не то. Это я и сам умею. А мне надо, чтобы из любого Edit"а стандартным нажатием Ctrl+C в clipboard получался хороший русский текст.
← →
Steep (2008-02-12 01:05) [34]unit файл
unit RusClipboard;
interface
uses Clipbrd;
type
TRusClipboard = class(TClipboard)
private
procedure SetCodePage(const CodePage: longint);
public
procedure Open; override;
procedure Close; override;
end;
implementation
uses Windows;
{ TRusClipboard }
procedure TRusClipboard.Close;
begin
SetCodePage($0419);
inherited;
end;
procedure TRusClipboard.Open;
begin
inherited;
SetCodePage($0419);
end;
procedure TRusClipboard.SetCodePage(const CodePage: longint);
var
Data: THandle;
DataPtr: Pointer;
begin
// Назначить кодовую страницу для буфера обмена
Data:= GlobalAlloc(GMEM_MOVEABLE + GMEM_DDESHARE, 4);
try
DataPtr := GlobalLock(Data);
try
Move(CodePage, DataPtr^, 4);
SetClipboardData(CF_LOCALE, Data);
finally
GlobalUnlock(Data);
end;
except
GlobalFree(Data);
end;
end;
var
FClipboard: TClipboard;
OldClipboard: TClipboard;
initialization
{Установить клипборд}
FClipboard:= TRusClipboard.Create;
OldClipboard:= SetClipboard(FClipboard);
if OldClipboard <> nil then OldClipboard.Free;
end.
← →
Steep (2008-02-12 01:10) [35]
> Это не то. Это я и сам умею. А мне надо, чтобы из любого
> Edit"а стандартным нажатием Ctrl+C в clipboard получался
> хороший русский текст.
наверно как то обрабатывать нажатие клавиш...
← →
Steep (2008-02-12 01:23) [36]типо
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Shift = [ssCtrl]) and (Key = ord("C")) then
begin
скопировать выделенный текст в буфер в нормальном виде :)))
end;
end;
← →
antonn © (2008-02-12 01:28) [37]
> ketmar © (12.02.08 00:03) [19]
[17] прочитай внимательно, запиши на бумажке и запомни.
пользователи, они такие, тянутся к тому продукту, который проще и надежней. и не бьет палкой. именно поэтому микрософт продает, зарабатывает и имеет бОльшую аудиторию, а ты сидишь в какой нибудь консоли и скрипишь зубами от зависти.
%)
← →
Германн © (2008-02-12 01:31) [38]
> antonn © (12.02.08 01:28) [37]
Иногда лучше жевать.
← →
antonn © (2008-02-12 01:32) [39]
> Германн © (12.02.08 01:31) [38]
>
>
> > antonn © (12.02.08 01:28) [37]
>
> Иногда лучше жевать.
Вот и я ему говорю.
← →
ketmar © (2008-02-12 01:41) [40]>[31] Игорь Шевченко © (2008-02-12 00:45:00)
тогда сначала научи, как добиться этого при помощи программного переключения раскладок. и чтобы юзер при сём не нервничал.
>[37] antonn © (2008-02-12 01:28:00)
я так рад, что ты обо мне много знаешь. можно, я тебе пожалуюсь? соседи постоянно в стену стучат: им мой скрип зубов по ночам спать мешает. я уже три вставных челюсти сточил, да…
я так полагаю, ты плевать хотел на m$, и денег у тебя больше, чем у них? я за тебя рад.
если не больше — не вякай глупости, а?
---
Understanding is not required. Only obedience.
← →
Германн © (2008-02-12 01:42) [41]
> antonn © (12.02.08 01:32) [39]
>
>
> > Германн © (12.02.08 01:31) [38]
> >
> >
> > > antonn © (12.02.08 01:28) [37]
> >
> > Иногда лучше жевать.
>
> Вот и я ему говорю.
>
Сначала посмотри в зеркало и скажи тому, кого в нём увидишь. Скажи ему несколько раз, пока тот, кто в зеркале, наконец-то поймет.
← →
antonn © (2008-02-12 01:46) [42]
> я так полагаю, ты плевать хотел на m$, и денег у тебя больше,
> чем у них? я за тебя рад.
> если не больше — не вякай глупости, а?
не имею склонности к подсчету чужих денег :) Потому что завидовать - дурно.
> Германн © (12.02.08 01:42) [41]
>
> Сначала посмотри в зеркало и скажи тому, кого в нём увидишь.
> Скажи ему несколько раз, пока тот, кто в зеркале, наконец-
> то поймет.
форум портит, я теперь тоже хочу вякать везде где можно, и желательно не в тему, и с направленной агрессией :)
← →
{RASkov} © (2008-02-12 01:51) [43]> [36] Steep (12.02.08 01:23)
Проще WM_COPY "поймать" нежели кнопки отслеживать, тем более что можно скопировать и "мышой" и другими сочетаниями "кнопок"....
← →
Steep (2008-02-12 01:51) [44]насчет клипборда...
допустим используем кодfunction SetClipboardText( const AText: string ): Boolean;
var
h:THandle;
begin
Clipboard.Open;
Clipboard.AsText := AText;
h := Clipboard.GetAsHandle(CF_TEXT);
SetClipboardData(CF_LOCALE, h);
Clipboard.Close;
end;
и затемSetClipboardText( MemoZpt.Text );
все работает
НО если пишем использовать эту процедуру на клавиши Ctr+Cprocedure TFrm_Text.MemoZptKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Shift = [ssCtrl]) and (Key = ord("C")) then
begin
SetClipboardText( TMemo(sender).selText );
end;
end;
то нифига не работает - как я понял винда использует свои методы...
а на наши плюет...
то есть нужно либо полностью перекрывать... либо... либо что-то другое....
...
все мои мозги на сегодня получули - хорошую тряску....
пойду я спать - время у меня уже 4 утра.....
всем удачного времени суток... а я уже сплю...
← →
ketmar © (2008-02-12 01:53) [45]>[42] antonn © (2008-02-12 01:46:00)
>не имею склонности к подсчету чужих денег
да? так ты ещё и наглый врун.
[37]: «именно поэтому микрософт продает, зарабатывает и имеет бОльшую аудиторию, а ты сидишь в какой нибудь консоли и скрипишь зубами от зависти»
внимательно прочитаю обоснование причин, по которым эту фразу можно понять не как: «ты лузер, и бабла как m$ не зашибаешь (да ваще тебе еле на лекарства хватает!), сидишь где-то в мухосранске; вот начни зашибать как m$ (ну, или как я хотя бы) — тогда и говори что-то».
сливы и отмазы не прокатят. или признай, что ты лжец, или обоснуй свои слова.
---
Understanding is not required. Only obedience.
← →
Steep (2008-02-12 01:54) [46]
> Проще WM_COPY "поймать" нежели кнопки отслеживать, тем более
> что можно скопировать и "мышой" и другими сочетаниями "кнопок".
> ...
хм... ладно еще минута мышления не повредит...
насколько я понимаю - это отлов сообщения от ОС - только вот с сообщениями я не работал...
нужно поискать будет как их ловить :)
но все это завтра! точнее сегодня но днем... все спать спать!
← →
Германн © (2008-02-12 01:59) [47]
> antonn © (12.02.08 01:46) [42]
>
> > Германн © (12.02.08 01:42) [41]
> >
> > Сначала посмотри в зеркало и скажи тому, кого в нём увидишь.
>
> > Скажи ему несколько раз, пока тот, кто в зеркале, наконец-
>
> > то поймет.
>
> форум портит, я теперь тоже хочу вякать везде где можно,
> и желательно не в тему, и с направленной агрессией :)
>
Форум "портит" лишь тех, кто изначально склонен к "вяканию" и к агресии, И ещё тех, кто склонен к неприятию возражений. И при этом не силён в тематике форума.
← →
antonn © (2008-02-12 02:05) [48]ладно, идем другом путем - а если юниксовый файл загрузить в мемо, оно #13 добавит?
а если это не мемо?
← →
{RASkov} © (2008-02-12 02:14) [49]> [46] Steep (12.02.08 01:54)
Попробуй вот, примерно, так:
в описании формы
......private
OldWnd: TWndMethod;
procedure NewWnd(var Mes: TMessage);
...........procedure{function} SetClipboardText( const AText: string ){: Boolean};
var
h:THandle;
begin
Clipboard.Open;
Clipboard.AsText := AText;
h := Clipboard.GetAsHandle(CF_TEXT);
SetClipboardData(CF_LOCALE, h);
Clipboard.Close;
end;
procedure TForm.FormCreate();
begin
OldWnd:=Memo.WindowProc;
Memo.WindowProc:=NewWnd;
end;
procedure TForm.NewWnd(var Mes: TMessage);
begin
if Mes.Msg=WM_COPY then SetClipboardText(Memo.SelText) else OldWnd(Mes);
end;
← →
Германн © (2008-02-12 02:31) [50]
> antonn © (12.02.08 02:05) [48]
>
> ладно, идем другом путем - а если юниксовый файл загрузить
> в мемо, оно #13 добавит?
>
А "оно" обязано? "Оно" где-то, когда-то, что-то обещало?
← →
Anatoly Podgoretsky © (2008-02-12 08:35) [51]> Steep (11.02.2008 23:58:16) [16]
> вроде после #13 (вроде ентер ) может идти #10 (символ каретки вроде как), а наоборот я не уверен
Наоборот - называется хакерская.
V V
| o |
Для новых русских
← →
Anatoly Podgoretsky © (2008-02-12 08:37) [52]> {RASkov} (12.02.2008 00:02:18) [18]
Ты тоже хакер или иезуит-одиночка.
← →
Steep (2008-02-12 09:09) [53]Спасибо всем большое за помощь!!!
Особенно:
> Игорь Шевченко ©
> {RASkov} ©
← →
Игорь Шевченко © (2008-02-12 09:43) [54]{RASkov} © (12.02.08 02:14) [49]
Это мы все умеем для одной формы. Когда их несколько тысяч, готовых, уже уметь перестаем. Когда совокупное количество проблемных контролов (из которых надо копировать) переваливает за десятки тысяч, руки просто опускаются. Я надеялся, что ketmar подскажет способ, как добавить unit в проект, вызвать его initialization автомагически и весь русский текст будет копироваться в юникодные окна без проблем.
← →
ketmar © (2008-02-12 12:55) [55]>[54] Игорь Шевченко © (2008-02-12 09:43:00)
тю. хучим CreateWindowEx, сабклассим формы. в чём проблема-то?
опять же — кто мешает пропатчить VMT на предмет InitInstance(), и в ней вешать обработчиками хоть чертей лысых?
трудно? да. реализуемо? да. магически? да.
подсказал?
---
Understanding is not required. Only obedience.
← →
Игорь Шевченко © (2008-02-12 12:59) [56]ketmar © (12.02.08 12:55) [55]
Я-то думал, ты знаешь. А туда же.
Я б тебе ответил фразой из старого анекдота, но правила :)
С IE бороться у тебя интереснее получается.
← →
ketmar © (2008-02-12 13:37) [57]>[56] Игорь Шевченко © (2008-02-12 12:59:00)
>Я-то думал, ты знаешь. А туда же.
а в чём проблема моих решения? они нереализуемы? реализуемы, и причём именно так, как ты сказал — достаточно будет написатьuses SuperUnicodePatcher;
. где мной не соблюдено заданное тобой условие? за скромную сумму в полторы тысячи американских денег я готов тебе это даже написать. 30$ предоплата, 30% после альфа-версии, 40% после сдачи. и ещё две тысячи за исходники.
---
Understanding is not required. Only obedience.
← →
ketmar © (2008-02-12 13:38) [58]>30$ предоплата
30% предоплата, конечно. %-))
---
Understanding is not required. Only obedience.
← →
ketmar © (2008-02-12 13:39) [59]ах, да. срок сдачи релиз — полтора месяца от получения первых 30%.
---
Understanding is not required. Only obedience.
← →
Игорь Шевченко © (2008-02-12 14:28) [60]ketmar © (12.02.08 13:37) [57]
> а в чём проблема моих решения? они нереализуемы? реализуемы,
> и причём именно так, как ты сказал — достаточно будет написать
> uses SuperUnicodePatcher;. где мной не соблюдено заданное
> тобой условие? за скромную сумму в полторы тысячи американских
> денег я готов тебе это даже написать
> ах, да. срок сдачи релиз — полтора месяца от получения первых
> 30%.
Тебе не кажется, что это несколько не совмещается с твоей фразой из поста [29]
> мне вот интересно, почему 99.9% вопрошающих про «кракозяблы в
> буфере обмена» никогда не задумываются, какое именно магическое
> действие совершает переключение раскладки, и как можно добиться того
> же, но раскладку не дёргать?
Я повторю - флеймить про IE у тебя гораздо лучше получается.
← →
ketmar © (2008-02-12 14:37) [61]>[60] Игорь Шевченко © (2008-02-12 14:28:00)
отчего же? совмещается. никаких разногласий не вижу. лично я вполне в курсе, откуда берётся этот эффект и как его решать. и точно так же, как в курсе — так мне на это и наплевать, у моих заказчиков не было неанглийских раскладок. для себя чинил когда-то в home-made проектах, но там и VCL никакой не светилось (хотя использовались *A-варианты функций). а сейчас мне вообще по-барабану, что там в винде через как сделано, потому и цену накатил большую: есть другая работа, но лично для тебя, как проявление уважения, готов от неё отвлечься; чтобы окупить простой — пришлось цену задрать.
---
Understanding is not required. Only obedience.
← →
{RASkov} © (2008-02-12 14:40) [62]> [52] Anatoly Podgoretsky © (12.02.08 08:37)
> иезуит
А это кто? ...или что
← →
Anatoly Podgoretsky © (2008-02-12 20:50) [63]> {RASkov} (12.02.2008 14:40:02) [62]
Если я тебе скажу, то ты или испугаешься, или обидишся.
Но я тебе скажу волшебное слово - гугл.
← →
{RASkov} © (2008-02-12 22:03) [64]> [63] Anatoly Podgoretsky © (12.02.08 20:50)
> Если я тебе скажу, то ты или испугаешься, или обидишся.
Да вот еще... :)
> Но я тебе скажу волшебное слово - гугл.Сегодня число иезуитов составляет 19 216 человек (данные 2007 года), из них 13 491 священников.
Фикасе.... их всех в лицо знают :)
← →
Anatoly Podgoretsky © (2008-02-12 22:37) [65]> {RASkov} (12.02.2008 22:03:04) [64]
Конечно, все переписаны
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.03.09;
Скачать: [xml.tar.bz2];
Память: 0.64 MB
Время: 0.048 c