Форум на Мурмане

Общие форумы => Компьютеры и ПО => Тема начата: Warlock от 22 Ноября 2000, 14:07



Название: Полезные фичи и советы по программированию
Отправлено: Warlock от 22 Ноября 2000, 14:07
а-а-у-у! Шарящие в windows API, отзовитесь!
Дано: дескриптор окна
Найти: 1. Как убить приложение, открывшее           данное окно           (sendmessage(Hanhle,WM_QUIT,0,0) и           destroywindow работают не всегда,           а с TerminateProcess и           TerminateThred у меня чёто пока не           получается, мож я чёто неправильно           делаю?);
       2. Как определить имя запускаемого                               файла этого приложения и путь к                               нему;
Заранее благодарен всем ответившим.
Примемеры желательно конечно на Delphi5 но и СИ я тоже понимаю немного;


Название: RE: Полезные фичи и советы по программированию
Отправлено: Gunner от 22 Ноября 2000, 14:16
Ряд полезных фич для Delphi:

Как убрать окно с экрана и панели задач?
Form1.Show;
Form1.Hide;

Как рисовать в чужом окне или по всему экрану?
procedure DrawOnScreen;
var
ScreenDC: hDC;
begin
ScreenDC := GetDC(0); {получить контекст экрана}
Ellipse(ScreenDC, 0, 0, 200, 200); {нарисовать}
ReleaseDC(0,ScreenDC); {освободить контекст}
end;

Как спрятать/показать кнопку пуск?
procedure Startbutton(visi:boolean);
Var Tray, Child : hWnd;
C : Array[0..127] of Char;
S : String;
Begin
Tray := FindWindow('Shell_TrayWnd', NIL);
Child := GetWindow(Tray, GW_CHILD);
While Child <> 0 do Begin
If GetClassName(Child, C, SizeOf(C)) > 0 Then Begin
S := StrPAS(C);
If UpperCase(S) |EQU APO|BUTTON' then begin
If Visi then ShowWindow(Child, 1)
else ShowWindow(Child, 0);
end;
End;
Child := GetWindow(Child, GW_HWNDNEXT);
End;
End;

procedure TForm1.Button1Click(Sender: TObject);
begin
startButton(False);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
startButton(True);
end;

Как определить какие приложения уже запущены?
procedure TForm1.Button1Click(Sender: TObject);
VAR
Wnd : hWnd;
buff: ARRAY [0..127] OF Char;
begin
ListBox1.Clear;
Wnd := GetWindow(Handle, gw_HWndFirst);
WHILE Wnd <> 0 DO BEGIN {Не показываем:}
IF (Wnd <> Application.Handle) AND {-Собственное окно}
IsWindowVisible(Wnd) AND {-Невидимые окна}
(GetWindow(Wnd, gw_Owner) = 0) AND {-Дочернии окна}
(GetWindowText(Wnd, buff, sizeof(buff)) <> 0) {-Окна без заголовков}
THEN BEGIN
GetWindowText(Wnd, buff, sizeof(buff));
ListBox1.Items.Add(StrPas(buff));
END;
Wnd := GetWindow(Wnd, gw_hWndNext);
END;
ListBox1.ItemIndex := 0;
end;

Как закрыть/открыть дверку CD-ROM?
uses mmsystem;

..............

procedure TForm1.Button1Click(Sender: TObject);
begin
mciSendString('Set cdaudio door open wait', nil, 0, handle);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
mciSendString('Set cdaudio door closed wait', nil, 0, handle);
end;

Как убрать мою программу из списка Alt Ctrl Del?
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external
'KERNEL32.DLL';

implementation

procedure TForm1.Button1Click(Sender: TObject);
begin //Hide
if not (csDesigning in ComponentState) then
RegisterServiceProcess(GetCurrentProcessID, 1);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin //Show
if not (csDesigning in ComponentState) then
RegisterServiceProcess(GetCurrentProcessID, 0);
end;

Как програмно переключить раскладку клавиатуры?
procedure TForm1.Button1Click(Sender: TObject);//На русский
var
Layout: array[0.. KL_NAMELENGTH] of char;
begin
LoadKeyboardLayout( StrCopy(Layout,'00000419'),KLF_ACTIVATE);
end;

procedure TForm1.Button2Click(Sender: TObject);//На английский
var
Layout: array[0.. KL_NAMELENGTH] of char;
begin
LoadKeyboardLayout(StrCopy(Layout,'00000409'),KLF_ACTIVATE);
end;

Как програмно переключить состояние клавиш Num Lock, Caps Lock, Scroll Lock?
VAR
KS: TKeyboardState;
begin
GetKeyboardState(KS);
KS[020] := KS[020] XOR 1; //Caps Lock
KS[144] := KS[144] XOR 1; //Num Lock
KS[145] := KS[145] XOR 1; //Scroll Lock
SetKeyboardState(KS);
end;

Как узнать версию DOS и Windows?
VAR
WinV: Word;
DosV: Word;

begin
WinV := GetVersion AND $0000FFFF;
DosV := GetVersion SHR 16;
Label1.Caption := IntToStr(Hi(DosV)) '.' IntToStr(Lo(DosV));
Label2.Caption := IntToStr(Lo(WinV)) '.' IntToStr(Hi(WinV));
end;


Название: RE: Полезные фичи и советы по программированию
Отправлено: HBR от 04 Декабря 2000, 10:25
>> Warlock
хай!
Ничем помочь не могу Ж)
Лучше бы дома почаще появлялся, хотябы в выходные.
бай!


Название: RE: Полезные фичи и советы по программированию
Отправлено: Warlock от 15 Декабря 2000, 17:04
>> Gunner
Thank's, слушай, а может ты знаешь как устанавливать в NT права на доступ к запущенной программе? Например, администратор прописывает на автозагрузку всем пользователям приложение, но пользователь может просто снять его через диспетчер задач.
Вот как сделать так, чтобы его могли снять только когда входили бы в систему как администраторы, а обычные пользователи не могли?
Best regards Warlock.


Название: RE: Полезные фичи и советы по программированию
Отправлено: Uswer от 15 Декабря 2000, 19:08
Можно ли по ярлыку программы отыскать саму программу?


Название: RE: Полезные фичи и советы по программированию
Отправлено: HBR от 16 Декабря 2000, 13:35
>> Warlock
Здорова хэк! Ну ты вопросик завернул!   Хочешь апгрейдить антигеймер? (http:////forum.murman.ru/images/smilies/happy.gif) Ну-ну, удачи тебе в этом запарном деле! А каков всетаки я папан! (http:////forum.murman.ru/images/smilies/happy.gif)


Название: RE: Полезные фичи и советы по программированию
Отправлено: HBR от 16 Декабря 2000, 13:43
>> Uswer
Конечно можно (http:////forum.murman.ru/images/smilies/happy.gif)


Название: RE: Полезные фичи и советы по программированию
Отправлено: Name от 16 Декабря 2000, 14:09
>> Uswer
Ты что совсем тупой?
Ты когда последний раз компьютером пользовался?
Купи себе очень умную книжку Windows для чайников называется!!!


Название: RE: Полезные фичи и советы по программированию
Отправлено: Name от 16 Декабря 2000, 14:13
>> HBr
Серега это ты?


Название: RE: Полезные фичи и советы по программированию
Отправлено: Warlock от 21 Декабря 2000, 14:49
Конечно он, а ктож ещё. Это конечно хорошо что сюда хоть ктото заходит,
но темнеменее для чайников повторяю название темы.
Плиз обратите внимание что это "Полезные фичи и советы по программированию"
а не "Руководство по пользованию MS WINDOWS".

А теперь по делу. Тут меня просветили что подобную фичу для закрытия
доступа пользователям к запущенному приложению так как я прошлый
раз описал сама система не выполняет. Т.е. её можно реализовать только
всякими разными манёврами и наворотами, что собственно сложно, глупо
и никому не нужно. А на самом же деле мою проблему можно решить проще.
Как известно абсолютно все процессы в НТ снять нельзя(при которых система
выдаёт сообщение типа "Операция не может быть завершена.Нет доступа.").
Так вот можно попытаться зарегестрировать свой процесс, чтобы он стал
системным(например таким же образом как убирается приложение из списка
задач в 95-м). Может кто подскажет как это зделать?

Best regards,
 --==[WARLOCK]==--.


Название: RE: Полезные фичи и советы по программированию
Отправлено: YSG от 03 Февраля 2001, 14:55
Группа разработчиков ПО предлагает услуги по разработке:
- компоненты VCL, ActiveX (СОМ)
- прикладные программы для Win 9x/NT
- приложения баз данных (локальные, клиент - сервер)
- WEB-дизайн

через Интернет или локально в Санкт-Петербурге.
Опыт более 6 лет, качество, гарантии.

http://ysg.nm.ru
e-mail: ysg@nm.ru  или  krons@nm.ru


Название: RE: Полезные фичи и советы по программированию
Отправлено: max от 17 Февраля 2001, 15:29
Как узнать все дескрипторы окон в Win9x ???


Название: RE: Полезные фичи и советы по программированию
Отправлено: Warlock от 21 Февраля 2001, 12:08
Max >>
смотри enumwindows,enumchildwindows, getwindow,findwindow и тюдю


Название: RE: Полезные фичи и советы по программированию
Отправлено: Warlock от 21 Февраля 2001, 12:14
А вот теперь к вам ко всем вот такой вопросик
Вот вам програмка:

program Project1;
uses windows,Sysutils;
var
clast,sect,bytes:word;
FreeSize: int64;
begin
asm
   MOV  AH,36H              ;номер функции
   MOV  DL,3                ;накопитель A
   INT  21H                 ;получаем информацию
   mov word ptr clast,BX    ;сколько                             ;свободных                             ;кластеров
   mov word ptr sect,AX     ;сколько                             ;свободных                             ;секторов
   mov word ptr bytes,CX    ;сколько                             ;свободных
                            ;байт
end;
if sect<>$ffff then FreeSize:=clast*sect*bytes;
messagebox(0,pchar(inttostr(FreeSize),'Disk info',mb_ok);
end.


В пятой дельфе данный код просто напрочь её вешает Ж8-[  ]]]]

А теперь внимание вопрос: ПОЧЕМУ????????


Название: RE: Полезные фичи и советы по программированию
Отправлено: Сережка от 28 Марта 2001, 09:42
Gunner >>Как сохранить(загрузить)Label.Caption в Delphi5.


Название: RE: Полезные фичи и советы по программированию
Отправлено: Jungle-Bee от 28 Марта 2001, 12:00
Warlock >>

var
clast,sect,bytes:word;
FreeSize: longint;
begin
asm
MOV AH,36H
MOV DL,3
INT 21H
mov word ptr clast,BX
mov word ptr sect,AX
mov word ptr bytes,CX
end;

if sect<>$ffff then FreeSize:=longint(clast)*sect*bytes else FreeSize:=0;
Writeln(FreeSize, ': ',clast,': ',sect,': ',bytes);
{messagebox(0,pchar(inttostr(FreeSize),'Disk info',mb_ok);}
end.

На Pascal'е всё фурычит со свистом !
Вывод: PASCAL RuleZZZ !!!


Название: RE: Полезные фичи и советы по программированию
Отправлено: FoodTechnologist от 03 Апреля 2001, 11:38
Warlock >>
INT 21H
См. Рубенкинг "Турбо паскаль для Windows"
глава "Кто боится реального режима". Даже в win16 не все так просто. А в win32...
Конечно, надо посмотреть, в чем ошибка, но так нагло вызывать прерывания - не думаю. А в делфи параллельно отладка идет, ее повесить немудрено. Больше ничего повесить, по-моему не может.

Да, кстати: использование ассемблера, апи в несистемных программах - дурной тон. (это, конечно, системная).
См. мою новую тему


Название: RE: Полезные фичи и советы по программированию
Отправлено: CORPSE от 24 Апреля 2001, 17:24
ALL WHO NEED------>Знаю пару полезных фич на XEON|tm| двухпроцессорный т.к. дома таковой имею,ели есть у кого-нибудь вопросы скажу чё надо.....TRUST ME CUANDOS DIAS TODAVIAS!


Название: RE: Полезные фичи и советы по программированию
Отправлено: Ocean от 08 Мая 2001, 16:23
Jungle-Bee >>
 Матерь божия это зачем это?
Хтож так делает?


Название: RE: Полезные фичи и советы по программированию
Отправлено: Jungle-Bee от 11 Мая 2001, 11:18
Ocean >>
Так покажи нам с Warlock'ом как надо, и мы повеселимся вместе с тобой, какие мы были не разумные.


Название: RE: Полезные фичи и советы по программированию
Отправлено: Burmuley от 21 Мая 2001, 16:24
Народ!!!
    Обращась ко всем продвинутым в ДЕЛЫФЯХ!!!
    У меня такой вот вопросик странноватый!
    Как из дельфи сделать так чтобы по нажатию КТРЛ АЛТ ДЕЛ на вылазил диспетчер задач или его небыло видно!!!
    Если мой вопрос вам покажется совсем тупым, то не говорите об этом никому!!!
    Заранее большой СПАСИБ!!!


Название: RE: Полезные фичи и советы по программированию
Отправлено: Sergey от 25 Июня 2001, 15:03
Burmuley >>
По-моему это вопрос не к дельфистам, а к системщикам Windows. Потому как за Ctrl-Alt-Del отвечает сама система.

А что есть необходимость такое сделать?
По-моему это бессмысленно..


Название: RE: Полезные фичи и советы по программированию
Отправлено: Burmuley от 15 Сентября 2001, 07:09
Sergey >> Быть или не быть КТРЛ АЛЬТ ДЕЛ эт уж мне надо! А вот помоч могбы нормально! Нефиг язвить! УУУ! Юзверьи проклятые! Дайте дельный совет!!!!!


Название: RE: Полезные фичи и советы по программированию
Отправлено: ROM от 24 Сентября 2001, 09:19
Uswer >>
 Если ручками - то "свойства"
 Если программно - разберись с форматом pif

зы. Дочего ленивая молодеж пошла...(http:////forum.murman.ru/images/smilies/sad.gif) Вот в наше время ручками через diskedit вскрывали 100 килобайтные сохранялки и ставили все по FF...


Название: RE: Полезные фичи и советы по программированию
Отправлено: Ma\/erick от 01 Октября 2001, 14:19
Uswer >>Для особо одаренных>>Щелкаешь правой кнопкой мыши по ярлыку, выбираешь "свойства",
выбираешь вкладку ярлык, там в поле "Объект" написан путь к программе. А еще там есть такая волшебная кнопочка "Найти объект..."!!!


Название: Полезные фичи и советы по программированию
Отправлено: No(c)sM от 25 Августа 2003, 16:20
Burmuley, #21 >> Посмотри апи функцию SystemParametersInfo. Я точно не помню но отключение ctrl alt del както связано с заставкой. Чёто вроде SPI_SETSCREENSAVEACTIVE. Короче поэксперементируй - сам разберёшся


Название: Полезные фичи и советы по программированию
Отправлено: RAM от 28 Октября 2003, 15:34
Ну почему Дельфи ??? ассемблер - сила!


Название: Полезные фичи и советы по программированию
Отправлено: RJF_Dilan от 17 Ноября 2003, 13:03
Rom, не учи народ устаревшим фичам в делфях. Пусть на С   пишут. Сишник намного мощнее делфей.


Название: Полезные фичи и советы по программированию
Отправлено: X-Train от 18 Ноября 2003, 13:37
А отслеживать нажатие клавиш, что совсем разучились? Примеров через дополнительную дллельку с ловушкой(hook) на нажатие клавиш  в инете море!!!


Название: Полезные фичи и советы по программированию
Отправлено: NEO от 06 Февраля 2004, 13:32
ПОМОГИТе!!!

мне надо решить ЗАДАЧИ НА ПАСКАЛЕ
НАДЕЮСЬ МЕН КТОНИБУДЬ ПОМОЖЕТ
ВОТ ЗАДАЧИ:
1)ДАНО ДВУЗНАЧНОЕ ЧИСЛО,ОПРЕДЕЛИТЬ:
а)КРАТНАЯ ЛИ ТРЁМ СУММА ЕГО ЦИФР;
б)КРАТНА ЛИ СУММА ЕГО ЦИФР ЧИСЛУ А;

2)ДАНО ЦЕЛОЕ ЧИСЛО n (1<_n<_99), ОПРЕДЕЛЯЮЩЕЕ ВОЗРАСТ ЧЕЛОВЕКА (В ГОДАХ).
ДЛЯ ЭТОГОЧИСЛА НАПЕЧАТАТЬ ФРАЗУ "МНЕ n ЛЕТ",
УЧИТЫВАЯ ЧТО ПРИ НЕКОТОРЫХ ЗНАЧЕНИЯХ n СЛОВО"ЛЕТ" НАДО ЗАМЕНИТЬ НА СЛОВО "ГОД" ИЛИ "ГОДА".

3)НАЧАВ ТРЕНИРОВКИ, ЛЫЖНИК В ПЕРВЫЙ ЖЕ ДЕНЬ ПРОБЕЖАЛ 10 КМ. КАЖДЫЙ СЛЕДУЮЩИЙ ДЕНЬ ОН УВЕЛИЧИВАЛ ПРОБЕГНА 10% от пробега предыдущего дня. ОПРЕДЕЛИТЬ:
а)ПРОБЕГ ЛЫЖНИКА ЗА ВТОРОЙ , ТРЕТИЙ , ...., ДЕСЯТЫЙ ДЕНЬ ТРЕНИРОВОК;
б)КАКОЙ СУММАРНЫЙ ПУТЬ ОН ПРОБЕЖАЛ ЗА ПЕРВЫЕ 7 ДНЕЙТРЕНИРОВОК.

4)НАПЕЧАТАТЬ МИНИМАЛЬНОЕ ЧИСЛО, БОЛЬШЕ 200, КОТОРОЕ НАЦЕЛО ДЕЛИТСЯ НА 17.

5) НАЙТИ МАКСИМАЛЬНОЕ ИЗ НАТУРАЛЬНЫХ ЧИСЕЛ, НЕ ПРИВЫШАЮЩИХ 5000, КОТОРОЕ НАЦЕЛО ДЕЛИТСЯ НА 39.

ПРИМЕРЫ МОЖИТЕ ОСТАВИТЬ НА ФОРУМЕ ИЛИ КИНУТЬ НА е-МАИЛ: neotelec@bk.ru
ЗАРАНЕЕ СПАСИБО.


Название: Полезные фичи и советы по программированию
Отправлено: Василий от 06 Февраля 2004, 15:02
Надеюсь, это не учебные задачи, а так, ради интереса? (http:////forum.murman.ru/images/smilies/bigsmile.gif) В противном случае будет, как минимум, масса проблем с лишними фичами, которые я использую (http:////forum.murman.ru/images/smilies/smile.gif)
Так как не было сказано, о каком паскале идёт речь, беру за основу FPC (хотя добавлю-ка IFDEFы).
Так, наброски, тоже исключительно ради интереса
Файл platform.inc
{Программы не предназначены для использования на занятиях в ВУЗах, СУЗах и школах}
{This file is free software, you may modify and use it according to GNU GPL}
{$ifdef FPC}
{$define NEWPAS}
{$mode objfpc}{$H }
{$endif}
{$ifdef Delphi}//Как и Kylix Open Edition
{$define NEWPAS}
{$endif}
{$ifdef Kylix}//Я смотрел только Kylix Open Edition
{$define NEWPAS}
{$endif}
{$ifdef NEWPAS}
{$ifdef windows}
{$APPTYPE CONSOLE}
{$endif}
{$endif}
Код:
----------Первая программа-----------program P1;{$I platform.inc}var X,A:byte;    C1,C2:byte;begin repeat  write('Введите двузначное число:');  readln(X);  if (X<10)or(X>100) then   writeln('Было сказано: двузначное'); until (X>10)and(X<100); C1:=X div 10;C2:=X mod 10; write('Сумма цифр') if ((C1 C2) mod 3)=0 then write('кратна 3') else  Writeln('не кратна 3'); Writeln('Введите A'); Readln(A); write('Сумма цифр') if ((C1 C2) mod A)=0 then write('кратна ',A) else  Writeln('не кратна ',A);end.----------И, как самая интересная, вторая---------------program P2;{$i platform.inc}{Программа не работает под Турбо Паскалем} function CorrectWord(n:integer):string; var M:integer; begin  M:=n mod 100;{:-)}  if (m>10)and(m<20) then Result:='лет' else   case n mod 10 of    0,5..9:Result:='лет';    1:Result:='год';    2..4:Result:='года';   end; end;var M:integer;begin write('Введите n:');readln(M); write('Мне ',M,' ',CorrectWord(M));end.
________
Что делает форум с форматированием!!!


Название: Полезные фичи и советы по программированию
Отправлено: Proud от 06 Февраля 2004, 18:43
Василий, #31 >>
Интерес в том, что не работает?

NEO, #30 >>
Файл platform.inc лучше не показывай..
соответственно, строку с ним.

Код:
program P2;function CorrectWord(n:integer):string; var M:integer;     Result:string; begin     case n mod 10 of         0,5..9:Result:='лет';         1:Result:='год';         2..4:Result:='года';     end;     CorrectWord:=Result; end; var M:integer; begin      write('Введите количество лет:');readln(M);      write('Мне ',M,' ',CorrectWord(M)); end.


Название: Полезные фичи и советы по программированию
Отправлено: NEO от 09 Февраля 2004, 14:56
СПАСИБО ОГРОМНОЕ


Название: Полезные фичи и советы по программированию
Отправлено: Dilan от 04 Мая 2004, 11:28
Василий, #31 >> Что Delphi, что Kylix (Open или Enterprise) - убогие вещи. Зачем убивать в себе чувство прекрасного?  (http:////forum.murman.ru/images/smilies/tongue.gif) КТО, скажи мне, профессионально пишет на Object Pascal? Есть гораздо более удобные языки и IDE для них... Привожу примеры (сам юзаю Gentoo Linux 2004.0, поэтому софт для нее родимой):

C    - emacs, eclipse, jedit   plugins
C#   - monodevelop
java - jedit, eclipse   plugins
Ну и плюс всякий вспомогательный софт...

Этого программисту хватит по самое не балуйся. А что еще надо?  (http:////forum.murman.ru/images/smilies/wink.gif)


Название: Полезные фичи и советы по программированию
Отправлено: Василий от 07 Мая 2004, 00:17
> КТО, скажи мне, профессионально пишет на Object Pascal?
Что Вы понимаете под "профессионально"?
> Зачем убивать в себе чувство прекрасного?
Кому как. Для меня более отвратительного, чем код на С с плюсами, найти трудно. К тому же, компилятор с С   тормозит ужасно.


Название: Полезные фичи и советы по программированию
Отправлено: br.less от 07 Мая 2004, 01:10
прекрасное это ассемблер, все четко строго и логично
а программисту асма хватт по самое не балуйся
А что еще надо он на нем и напишет (http:////forum.murman.ru/images/smilies/tongue.gif)


Название: Полезные фичи и советы по программированию
Отправлено: Dilan от 08 Мая 2004, 10:38
Василий, #35 от 07-05-2004 00:17 >>
> КТО, скажи мне, профессионально пишет на Object Pascal?
Что Вы понимаете под "профессионально"?
Зачем убивать в себе чувство прекрасного?
Кому как. Для меня более отвратительного, чем код на С с плюсами, найти трудно. К тому же, компилятор с С   тормозит ужасно.


Код С   достаточно читабельный, если прога написана нормально, то прочитать код и понять его не составит труда.  (http:////forum.murman.ru/images/smilies/wink.gif)


Название: Полезные фичи и советы по программированию
Отправлено: Dilan от 08 Мая 2004, 10:39
br.less, #36 от 07-05-2004 01:10 >>
> прекрасное это ассемблер, все четко строго и логично
а программисту асма хватт по самое не балуйся
А что еще надо он на нем и напишет (http:////forum.murman.ru/images/smilies/tongue.gif)


Далеко не всегда стоит писать на асме, для решения некоторых проблем проще использовать другие языки, тот же С  , например...  (http:////forum.murman.ru/images/smilies/smile.gif)


Название: Полезные фичи и советы по программированию
Отправлено: br.less от 09 Мая 2004, 00:14
так мы о прекрасном или об обыденном? (http:////forum.murman.ru/images/smilies/wink.gif)


Название: Полезные фичи и советы по программированию
Отправлено: Dilan от 11 Мая 2004, 09:54
br.less, #39 от 09-05-2004 00:14 >>
> так мы о прекрасном или об обыденном? (http:////forum.murman.ru/images/smilies/wink.gif)

А что ты подразумеваешь под обыденным, а что под прекрасным?  (http:////forum.murman.ru/images/smilies/wink.gif)


Название: Полезные фичи и советы по программированию
Отправлено: Dilan от 13 Мая 2004, 11:27
Василий, #35 >> Я, конечно, прошу прощения, но ты на чем пишешь под Linux? Де-факто в Linux - C  , можно писать, конечно, и на Java, Perl, Pascal и других, НО без глубокого знания С   в Linux'е делать нечего.  (http:////forum.murman.ru/images/smilies/lol.gif)


Название: Полезные фичи и советы по программированию
Отправлено: Dilan от 13 Мая 2004, 11:28
Dilan, #41 от 13-05-2004 11:27 >>
> Василий, #35 >> Я, конечно, прошу прощения, но ты на чем пишешь под Linux? Де-факто в Linux - C  , можно писать, конечно, и на Java, Perl, Pascal и других, НО без глубокого знания С   в Linux'е делать нечего.  (http:////forum.murman.ru/images/smilies/lol.gif)

Это мое IMHO.  (http:////forum.murman.ru/images/smilies/smile.gif)


Название: Полезные фичи и советы по программированию
Отправлено: Василий от 13 Мая 2004, 16:20
> Де-факто в Linux - C  , можно писать, конечно, и на Java, Perl, Pascal и других, НО без глубокого знания С   в Linux'е делать нечего.
Вот именно - по мнению. Ядро на чём написано? На C  ? Нет! C   его даже не всегда и собирает (о такой возможности сейчас идут споры). На чистом С, а это уже легче. Более того, многие серьёзные проекты написаны именно на С, без плюсов. А если попытаться собрать чего-нибудь на С с плюсами, то даже при уменьшении оптимизации времени на это уйдёт...
А пишу я на FreePascal. Он имеет неплохие библиотеки, поддержку всего, чего надо, а теперь и прекрасную IDE типа Delphi под Linux и Windows (кстати, интерфейс на русском языке, не без меня).
Когда участвовал (немного) в общих С-шных проектах, то пользовался p2c - C-шный код я и без того понимал, а для нового лучше всё-таки паскалевский.


Название: Полезные фичи и советы по программированию
Отправлено: Dilan от 13 Мая 2004, 16:28
Василий, #43 >> Не знаю, как с FreePascal, но под Linux проще писать на С и С  , т.к. есть возможность не изобретать велосипед заново, а использовать огромное количество уже готовых внешних библиотек, хотя бы библиотек GTK, Qt или SDL, а в паскале такой возможности, насколько я знаю нема (просто на паскале никогда не писал мощные вещи).


Название: Полезные фичи и советы по программированию
Отправлено: Dilan от 13 Мая 2004, 16:29
Василий, #43 >> Я имею в виду софт, который в большинстве своем пошется на С  .


Название: Полезные фичи и советы по программированию
Отправлено: Василий от 13 Мая 2004, 16:48
Кстати, вот читаю я новости на LOR, и вижу, что много ошибок - в самых простых опечатках в 1 символ. К этому С (и с плюсами тоже) малоустойчив. В отличие от паскаля, который чуть что не так - сразу ошибку при компиляции выдаст.


Название: Полезные фичи и советы по программированию
Отправлено: Dilan от 13 Мая 2004, 16:55
Василий, #46 >> Уууух, Лор - бадяга, уж лучше на www.linuxshop.ru статьи и новости почитывать, хотя на мой взгляд самый рулезный сайт по новостям - www.linuxcenter.ru

По поводу устойчивости - когда программист пишет прогу, даже если она будет без вопросов компилиться, он всегда не единожды сделает трассировочку, отладку, оптимизацию кода, вот только тогда всплывут все баги.


Название: Полезные фичи и советы по программированию
Отправлено: Dilan от 13 Мая 2004, 17:16
Dilan, #44 от 13-05-2004 16:28 >>
> Василий, #43 >> Не знаю, как с FreePascal, но под Linux проще писать на С и С  , т.к. есть возможность не изобретать велосипед заново, а использовать огромное количество уже готовых внешних библиотек, хотя бы библиотек GTK, Qt или SDL, а в паскале такой возможности, насколько я знаю нема (просто на паскале никогда не писал мощные вещи).

Забыл добавить, надо же еще стараться делать что-то с наименьшими затратами времени, ресурсов и т.д.


Название: Полезные фичи и советы по программированию
Отправлено: Василий от 14 Мая 2004, 12:51
> уж лучше на www.linuxshop.ru статьи и новости почитывать, хотя на мой взгляд самый рулезный сайт по новостям - www.linuxcenter.ru
Всё бы хорошо, но больно уж он в Netscape на старых машинах тормозил. К счастью, новости оттуда почти всегда дублируются на ЛОРе.
> По поводу устойчивости - когда программист пишет прогу, даже если она будет без вопросов компилиться, он всегда не единожды сделает трассировочку, отладку, оптимизацию кода, вот только тогда всплывут все баги.
(http:////forum.murman.ru/images/smilies/lol.gif)
Тогда уж можно спокойно захлёбываться в воде - медики всегда сделают Вам искусственное дыхание.
К моменту отладки ошибок должно быть как можно меньше. Ведь отладка - вещь некорректная - программа может работать прекрасно, и только при определённой комбинации действий сработает опечатка.
К тому же отладка - вещь очень трудоёмкая, если при компиляции ошибку можно найти сразу и почти там, где она есть, то при отладке ошибка всплывёт где-нибудь ещё.
Более  того, программист может, будучи нетерпеливым, провести отладку основной ветки, не проверив обработку всех исключительных ситуаций.
А теперь попробуйте вообразить, во что превращается отладка, когда затрагивается важный файл более или менее серьёзного C  -проекта, пересборка которого займёт часов 5. Если учесть, что скорость компилятора Паскаля выше, да и первые ошибки, которые в С   можно поймать при выполнении, будут выявлены в момент компиляции этого файла (т.е. в первые секунды), то, думаю, преимущества явные.
Вот пример - знаменитая уязвимость, когда в условном операторе вместо проверки (сравнения)== поместили присваивание =. Конечно, мне, как паскалисту, вообще не понятно, зачем в условии вообще предусматривать возможность присваивания.
> Не знаю, как с FreePascal, но под Linux проще писать на С и С  , т.к. есть возможность не изобретать велосипед заново, а использовать огромное количество уже готовых внешних библиотек, хотя бы библиотек GTK, Qt или SDL, а в паскале такой возможности, насколько я знаю нема
Не всё так плохо, как Вам кажется. Во-первых, уже сделали более или менее юзабельную h2pas, что позволяет путём незначительного исправления переделать традиционные с-шные h-файлы для связывания с библиотеками. Во-вторых, посмотрите, что входит в комплект пакетов FreePascal - gtk, xlib, zlib, mysql (gtk2 - есть отдельно) и многие другие привязки уже есть в готовом виде.SDL - не помню, наверно, есть.
Qt в Паскале имеет очень мало смысла (хотя в kylixе его используют), т.к. в паскале и в С разная идеология ООП.
А если учесть, что возможности графических библиотек (включая gtk и qt) почти полностью перекрываются возможностями vcl, clx и lcl (последний - для FPC), то о лишних затратах времени можно не говорить.


Название: Полезные фичи и советы по программированию
Отправлено: Dilan от 15 Мая 2004, 09:28
Василий, #49 от 14-05-2004 12:51 >>
> А теперь попробуйте вообразить, во что превращается отладка, когда затрагивается важный файл более или менее серьёзного C  -проекта, пересборка которого займёт часов 5.

Что же это за файл должен быть???  (http:////forum.murman.ru/images/smilies/eek.gif) Каждый файл можно оттрасировать отдельно...  (http:////forum.murman.ru/images/smilies/wink.gif)


Название: Полезные фичи и советы по программированию
Отправлено: Василий от 16 Мая 2004, 00:16
> Что же это за файл должен быть???  Каждый файл можно оттрасировать отдельно..
Скажем, config.h
(http:////forum.murman.ru/images/smilies/bigsmile.gif)


Название: Полезные фичи и советы по программированию
Отправлено: Dilan от 18 Мая 2004, 08:48
Василий, #51 >> Гы, шутник.  (http:////forum.murman.ru/images/smilies/lol.gif) Я этим не занимаюсь, это за меня другие люди делают.  (http:////forum.murman.ru/images/smilies/wink.gif)


Название: Полезные фичи и советы по программированию
Отправлено: Василий от 18 Мая 2004, 12:34
Вот то-то и оно! Сделает configure то, чего Вы плохо предусмотрели, и всё! Сколько раз бывает, что при "экзотической" конфигурации системы (а такой может оказаться любая конфигурация, отличная от программиста), компиляция просто не удаётся. configure проходит, а дальше - в лучшем случае, ошибка компиляции. В худшем - "nasty bug".
А, вообще, кроме config.h есть и масса других общих .h файлов, используемых почти всеми .c-файлами.


Название: Полезные фичи и советы по программированию
Отправлено: Dilan от 18 Мая 2004, 12:41
Василий, #53 >> Еще НИ РАЗУ не было такого, чтобы у наших проектов возникали проблемы с чем-либо, ни configure, ни компиляция не подводили никогда, потому что есть четкое распределение обязанностей. В мои обязанности не входит следить, например, за проблемами конфигурирования => мне по барабану кто и как ее будет решать. А вот если написанный моню код не компилится - это уже моя проблема, и соответственно никтьо кроме меня не будет решать эту проблему. Вот такие пироги.


Название: Полезные фичи и советы по программированию
Отправлено: Василий от 21 Мая 2004, 18:29
> А вот если написанный моню код не  компилится - это уже моя проблема, и соответственно никтьо кроме меня не будет решать эту проблему.
А если он компилится лишь при чудесном сочетании процессора/версии системы и библиотек/другой конфигурации, на удивление оказавшейся на Вашем компьютере?


Название: Полезные фичи и советы по программированию
Отправлено: Dilan от 22 Мая 2004, 10:44
Василий, #55 >> Приходится учитывать такие мелочи, но пока проблем не было.  (http:////forum.murman.ru/images/smilies/smile.gif)