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

» Вопросы по Delphi (до версии 2009) - часть 5

Автор: Frodo_Torbins
Дата сообщения: 06.08.2009 19:21
delover
Цитата:
Привожу пример подходящий допустим для маленького коллектива
Вот собственно и различие, в королевстве считают, что так делать нельзя.

Нечто странное пишете:
Цитата:
e := te.create
raise e;
e.free;
После raise обьект исключения ведь полностью в распоряжении RTL.

Если же брать код:
Код: Obj := TSomeClass.Create;
StrToInt(Edit1.Text);
...
Obj.Free;
Автор: delover
Дата сообщения: 07.08.2009 12:24
Frodo_Torbins
Различие... А что Вы имеете ввиду:

Цитата:
в королевстве считают, что так делать нельзя.

Они составляют тесты для программистов одиночек???
Если брать большой коллектив то мой пример неудачен, так как он просто зачёркивает все вопросы - если нормально криейт без тру то нормально и StrToInt и любой непечатный синтаксис. Пример не актуален и не уместен так как получается типа экзамена:
- Что получится если мнимую единицу прибавить к не мнимой?
- 1 + 1i
- Правильно. (Тут же) А можно ли извлекать корень из отрицательного числа?
- Да
- Неправильно, так как Ваша неоднобокость противоречит нашей трёхсотнелетнедавной принципиальности, заключающейся в том, что если вы второкласник то ответите неправильно (вопрос 1) и если вы даже академик то тоже ответите неправильно (вопрос 2).

В целом там есть очень интересные вопросики которые не могут непонравится. Однако если применять некоторые вопросы к тем многим программерам, которые разыскивая причину бага видят криейт без тру и воскликают "НУ ВСЁ ПРавильно - будет бага". То явно можно "по честному" схлыздить и забрать балл... Сами понимаете бочка мёда.
Автор: delover
Дата сообщения: 07.08.2009 21:51
зы
немного подчистил для большей ясности.
Автор: asdnsd
Дата сообщения: 07.08.2009 22:11
Что то странное.. пытаюсь определить версию Windows в Win7 следующим кодом:


Код:
function DetectWinVersion : TWinVersion;
var
OSVersionInfo : TOSVersionInfo;
begin
Result := wvUnknown; // Неизвестная версия ОС
OSVersionInfo.dwOSVersionInfoSize := sizeof(TOSVersionInfo);
if GetVersionEx(OSVersionInfo)
then
begin
case OSVersionInfo.DwMajorVersion of
3: Result := wvNT3; // Windows NT 3
4: case OSVersionInfo.DwMinorVersion of
0: if OSVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT
then Result := wvNT4 // Windows NT 4
else Result := wv95; // Windows 95
10: Result := wv98; // Windows 98
90: Result := wvME; // Windows ME
end;
5: case OSVersionInfo.DwMinorVersion of
0: Result := wvW2K; // Windows 2000
1: Result := wvXP; // Windows XP
2: Result := wv2003; // Windows 2003
end;
6: case OSVersionInfo.dwMinorVersion of
0: Result := wvVista; // Windows Vista
1: Result := wvSeven; // Windows Seven
end;
end;
end;
end;
Автор: Frodo_Torbins
Дата сообщения: 07.08.2009 23:26
delover
Цитата:
Они составляют тесты для программистов одиночек???
Они составляют тесты основываясь на каком то своем личном опыте. Видимо натыкались на подобные баги.

Цитата:
если нормально криейт без тру
А с тру это так что ли:
Код: try
Obj := TSomeClass.Create;
// Операции с Obj
finally
Obj.Free;
end;
Автор: delover
Дата сообщения: 09.08.2009 20:13
Frodo_Torbins

Цитата:
Другое дело если конструктор как нибудь в try/except обернуть

Чуствую что мысль одна и та же у нас вертится . Думаю что не стоит уделять этому много своего личного внимания. Уверен что отличных вопросов на квинтане хватает, их просто завались. А те вопросы которые занимали ранее первые места и забирали все призы могут поделиться своим местом с другими вопросами. Если целью вопроса про самкласс было практическое знание конструкций исключений, то на эту тему можно спросить много. При этом необязательно называть утечкой памяти то что занимает много внимания пользователя не видевшего вообще как это написано. И так не хотелось бы забивать голову конвертациями в коде и смесями визуальных эффектов с понятием утечка...
Автор: JohnSilver182
Дата сообщения: 10.08.2009 11:30
Hi

А как выполнить правильно копирование ?
Есть Xcopy , но а если в Sourse или Destination куча пробелов ??


Цитата:
ShellExecute(Handle,'open','xcopy'
Автор: Frodo_Torbins
Дата сообщения: 10.08.2009 13:53
JohnSilver182
Попробуйте заключить их в двойные кавычки. Например:
Код: md "D:\My Dir\"
Автор: Denion
Дата сообщения: 10.08.2009 18:15
Всем привет.

Вот наткнулся на небольшую проблему. Нужно сделать цикл для проверки Дисковых букв, которые в данный момент подключены и исключить данные буквы.

Суть такова. В ListBox добавляются буквы существующих дисков, например "C:\", "D:\", "E:\" --> далее запускается проверка и в Label присваеваиться "F:\", если "F:\" присутствует в ListBox'e --> то тогда в Label присваеваеться следующая буква и так далее.

У меня проблема с построением циклов такого рода. Буду очень благодарен за помощь.
Автор: V1s1ter
Дата сообщения: 10.08.2009 22:27
Denion
Если я правильно понял вопрос, то вот, на скорую руку по пямяти, возможно что-то не так пишется но идея по моему ясна.

Код: Var
D: Char;
begin
D := 'A';
while ListBox.Items.IndexOf(D+':\') >= 0 do Inc(D);
if D <= 'Z' then Label1.Caption := D+':\'
else Label1.Caption := 'Все буквы кончились...';
end;
Автор: Denion
Дата сообщения: 10.08.2009 23:26
V1s1ter, Огромное спасибо.... Все работает, как доктор прописал... Жаль тут нет репутации, я б тебе поставил плюсик. Еще раз огромное спасибо!!!!
Автор: Maks150988
Дата сообщения: 11.08.2009 10:47
asdnsd
Посмотрите еще здесь http://www.michael-puff.de/Artikel/GetVersionEx.shtml пример.
Автор: a1exD
Дата сообщения: 11.08.2009 13:49
Помогите переписать этот код на С++.
case Byte of
0: (RecSize: Cardinal); // files of record
1: (BufSize: Cardinal; // text files
BufPos: Cardinal;
BufEnd: Cardinal;
BufPtr: PChar;
OpenFunc: Pointer;
InOutFunc: Pointer;
FlushFunc: Pointer;
CloseFunc: Pointer;
UserData: array[1..32] of Byte;
Name: array[0..259] of Char; );
Автор: akaGM
Дата сообщения: 11.08.2009 14:59
a1exD
давай полный тип...
то есть всё, что стоит в блоке type или юзай вот это:

Код:
typedef union {
struct {
int BufSize;
int BufPos;
int BufEnd;
char * BufPtr;
void * OpenFunc;
void * InOutFunc;
void * FlushFunc;
void * CloseFunc;
unsigned char UserData[32];
char Name[260];
};
int RecSize;
} MY_UNION;
Автор: delover
Дата сообщения: 11.08.2009 15:04
akaGM
Похоже на стандартный тип file/text в стандартном паскале. Возможно в старых билдерах есть исходные буквы для этого. Либо как вариант - подтесать.
Автор: akaGM
Дата сообщения: 11.08.2009 15:10
delover
да, похоже на то...

наверняка компилятор Сей пишет...
Автор: spasius
Дата сообщения: 12.08.2009 11:39
Всем ру-бордовцам привет.
Подскажите может кто-нить встречал компоненты или модули для генерации Капчи на Delphi с кодом?
Спасибо.
Автор: a1exD
Дата сообщения: 12.08.2009 12:42
Понятно, я к примеру взял кусок кода из файла Delphi. Мне не понятно, ведь в си аналог switch и в скобках должна стоять переменная,которая потом сравнивается со значениями. Почему стоит Byte? И почему потом выражения в скобках идут? Вообще, мне надо разобраться, как переписать на си следующие куски кода

type
type32 = record
case integer of
1 : ( pres : Integer ) ;
2 : ( value : single ) ;
3 : ( h,l : word ) ;
4 : ( b1,b2,b3,b4 : byte ) ;
5 : ( hi,li : Smallint ) ;
end ;

AnalizeResult = record
case integer of
1 : ( Result : SectErrs;
format : string[80] ;
SectionPassport : TSectionPassport ;
FilePassport : TFilePassport ;
StartTime,
EndTime,
StartPicket,
EndPicket : integer ;
filetype : string[80] ;
) ;
end ;
Автор: JohnSilver182
Дата сообщения: 12.08.2009 13:14
Hi All

Моя прога выводит под Win98 такую ошибку Canvas does not allow drawing

Есть подозрение что в потоке я вызываю процедуру


Цитата:
Procedure ShowMsgLB(msg:String);
var s:string;
begin
try
if FrmMsg.Visible=false then FrmMsg.Visible:=true; //Форма для вывода сообщений
SendMessage(FrmMsg.Handle, OutMsgLB, 0, lParam( Pansichar(msg) ) );
except
end;//ex}
end;


Но под WInXP все ОК





Автор: akaGM
Дата сообщения: 12.08.2009 13:19
a1exD

Цитата:
Почему стоит Byte? И почему потом выражения в скобках идут? Вообще, мне надо разобраться, как переписать на си следующие куски кода

я думаю, тебе и с паскалем неплохо бы разобраться для начала, т.к. ты основ не знаешь...


Код: typedef union {
int pres;
float value;
unsigned int h,l;
unsigned char b1,b2,b3,b4;
short hi,li;
} type32;


typedef union {
struct {
SectErrs Result;
char format[80];
TSectionPassport SectionPassport;
TFilePassport FilePassport;
int StartTime,
EndTime,
StartPicket,
EndPicket;
char filetype[80];
};
} AnalizeResult;
Автор: JohnSilver182
Дата сообщения: 12.08.2009 14:43
Перенесено
Автор: data man
Дата сообщения: 13.08.2009 06:20

Внимание всем, использующим Delphi c 4 по 7 !
Появился саморазмножающийся вирус поражающий Delphi !
Поражены как минимум QIP и AIMP !
Если у Вас в папке Lib есть файл SysConst.bak - значит Ваш компьютер заражен.
Лечение - копирование этого файла с именем SysConst.dcu.
Подробности здесь
Автор: AlexMoor
Дата сообщения: 13.08.2009 12:33
Доброго времени суток!
Не знаю, в эту ли ветку вопрос, но навскидку более подходящей не нашел. Итак.
Перехожу с D5 на BDS2007. Ужасно раздражает дизайнер форм (кто пользовался D1-D7 поймет). Нашел способ "оторвать" форму от окна дизайнера (Tools - Options - VCL Designer - снял чекбокс Embedded Designer). Но переключаться кликом или горячей клавишей с окна кода на форму не позволяет, чтобы добраться до кода форму приходится закрывать, да и ToolPalette ведет себя при этом как-то неустойчиво.
Собственно вопрос - может быть существуют какие-то решения/расширения IDE, чтобы вернуть поведение дизайнера к привычному виду? Прошу, не пройдите мимо!
Автор: jonikDk
Дата сообщения: 13.08.2009 12:48
AlexMoor
tools от Andy's вроде должны помочь тебе
http://andy.jgknet.de/blog/?page_id=65 попробуй. Палитру компонент точно возвращают старые.
Автор: GoodRobin
Дата сообщения: 13.08.2009 13:38
Доброго времени суток!
Мой вопрос прост:
массив чисел выводится через Label, но нужно чтобы StringGrid заполнялся получаемыми числами. Как это сделать?
Заранее спасибо!

upd.

Спасибо, сам сделал.
Автор: delover
Дата сообщения: 13.08.2009 14:53
Странно, что ещё кто-то помнит о совместном употреблении $I и Reset. И ещё страннее что выбран SysConst... Спасиб за инфу.
Автор: akaGM
Дата сообщения: 13.08.2009 17:56
delover
{$I+}
reset(fp);
{$I-}
гы-гы

а это ты к чему?
Автор: delover
Дата сообщения: 13.08.2009 22:52
akaGM
Либо надписи неподходят для базового иноутпута, либо автору подсказали и научили что делать, ну и либо третий вариант не исключающий второй вариант. До первого варианта мне дела нету, а вот другие только удивляют, правда есть ещё вариант, что всё получилось случайно, но это уже не вариант. Собственно к этому... )

AlexMoor
Там в 2006 рядом со строкой меню можно запомнить настроеный внешний вид, только лучше запустить среду под админом. Там же выбирается SDI/MDI, надо попереключать. Свои кнопки назначать можно взяв из демок пакет продуктивности. Если поубирать в файле проекта имена форм идущие после юнита в комментах (типа Form1 {TForm1}) , то модуль будет открываться вначале с кодом, потом хоткеем можно переходить к дизайну, но можно иметь настройку переключаемую рядом с меню. Моё мнение что лучше вообще ничего не настраивать, привыкать как есть, а то можно так всю жизнь заниматься своими настройками и проходить мимо новых удобств (ИМХО).
Автор: AlexMoor
Дата сообщения: 14.08.2009 09:10
jonikDk
Спасибо, покопаюсь

delover
Во-первых вопрос был по 2007.

Цитата:
Моё мнение что лучше вообще ничего не настраивать, привыкать как есть, а то можно так всю жизнь заниматься своими настройками и проходить мимо новых удобств

Не все, что делается разработчиками среды, следует воспринимать как удобства и улучшения - порой выходит прям "хотели как лучше - получилось как всегда" (IMHO). Да и не собираюсь я всю жизнь заниматься настройками, 5-я версия (как и прежде с 1-й по 5-ю) стоит и работает безо всяких шаманств. Просто хотелось и эту среду настроить так, чтобы работать было комфортно как и прежде.
Сегодня после долгого шаманства пришел к компромису - отключил Embedded Designer, выбрал Layout - Classic Udocked, вручную расставил все окна и запомнил Layout, все стало почти как прежде. Спасибо всем откликнувшимся, вопрос закрыт
Автор: Cryogen2003
Дата сообщения: 14.08.2009 11:25
Люди, помогите в маленькой проблемке. Вот чего-то навскидку не могу вспомнить как сделать кое что-то.
Есть код определенный на HTML (форма для ввода):

Код:
<form action="http://myserver:8080/FileSave" enctype="multipart/form-data" method="post" name="JBOSS" id="JBOSS">
FN: <input type="file" name="FN" id="FN" />
FILENAME: <input type="text" name="FILENAME" id="FILENAME" />
PROJECT: <input type="text" name="PROJECT" size=40 id="PROJECT" value="2007/1/25/PASSPORT" />
C_DOCID: <input type="text" name="C_DOCID" id="C_DOCID" value="30002061" />
ZIPPED: <input type="text" name="ZIPPED" id="ZIPPED" value="0" />
<input type="submit" name="TYPE" id="TYPE" value="PUT" />
</form>

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Clipper 5


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