Дык разве я виноват что для: "чтонибудь такое например" реализация предложена неверная.
Lord_of_Darkness писал(а):
или ты ждал, что я тут модуль накатаю на пару тысяч строк с быстрой сортировкой всевозможных наборов данных и с кучей перегружаемых функций??
Это типа наезд? Вот ИМХО зря вы так товарищ… Модуль я не ждал - сам накропал из любопытства. Кстати, без перезагружаемых функций, чуть больше 200 строк.
Member
Статус: Не в сети Регистрация: 03.03.2006 Откуда: Москва
Подскажите пожалуйста, как заставить средстваи Delphi выводить звук по поределенному каналу. Причем чтоб одновременно один звуковой файл проигрывался по одному каналу, а другой по другому.
Member
Статус: Не в сети Регистрация: 29.06.2004 Откуда: Мурманская обл.
Koval var w: variant;
...
w:=CreateOLEObject('Word.Application');
w.activeDocument.Tables.Add(Range:=w.ActiveDocument.Range, NumRows:=stringgrid.RowCount, NumCols:=stringgrid.colcount);
for i:=0 to stringgrid.RowCount do
begin
Member
Статус: Не в сети Регистрация: 01.03.2006 Откуда: Москва
Начал учить Delphi.
Подскажите пожалуйста по какой книге лучше всего учится самостоятельно? (желательно чтоб ее можно было скачать)
И где можно взять задачки которые нужно выполнять? Допустим сделать программу типа калькулятор, еще чтонить?
Вот делал калькулятор, все работает кроме деления на 0, почему?
Код:
ArgSecond := StrToFloat(edit.Text); if IfArg=1 then OutputValue := ArgFirst+ArgSecond;Edit.Text := FloatToStr(OutputValue); if IfArg=2 then OutputValue := ArgFirst-ArgSecond;Edit.Text := FloatToStr(OutputValue); if IfArg=3 then begin if ArgSecond=0 then begin Edit.Text := 'ERROR'; end else begin OutputValue := ArgFirst/ArgSecond; Edit.Text := FloatToStr(OutputValue); end; end; if IfArg=4 then OutputValue := ArgFirst*ArgSecond;Edit.Text := FloatToStr(OutputValue);
И еще можно как нибудь проще реализовать стирание последнего символа:
function GridToWord(Grid: TStringGrid; ValuesForWord: PValuesForWord): Boolean; var R, C, GR, GC: Integer; Word, Doc, Table: OLEVariant; begin Result:= True; try Word:= CreateOleObject('Word.Application'); except Result:= False; Exit; end; with ValuesForWord^ do begin Word.Visible:= VisibleWord; Doc:= Word.Documents.Add; if Title <> '' then begin Word.Selection.ParagraphFormat.Alignment:= 1; Word.Selection.Font.Bold:= True; Word.Selection.Font.Name:= TitleFontName; Word.Selection.Font.Size:= TitleFontSize; Word.Selection.Font.Color:= TitleFontColor; Word.Selection.TypeText(Text:= Title); Word.Selection.TypeParagraph; end; Word.Selection.Font.Bold:= False; Word.Selection.Font.Name:= GridFontName; Word.Selection.Font.Size:= GridFontSize; Word.Selection.Font.Color:= GridFontColor; Word.Selection.TypeParagraph; with Grid do begin C:= ColCount; R:= RowCount; Table:= Doc.Tables.Add(Word.Selection.Range, R, C); for GC:= 1 to C do for GR:= 1 to R do Table.Cell(GR, GC).Range.Text:= Cells[GC - 1, GR - 1]; end; if SaveFileName <> '' then begin Doc.SaveAs(WideString(SaveFileName), 0); Doc.Close; Word.Quit; end; end; end;
+ (плюс)
Код:
procedure TForm1.Button1Click(Sender: TObject); var vfw: PValuesForWord; begin New(vfw); try with vfw^ do begin Title:= 'Чисто типа безумняково-пацанское демо... ;)'; VisibleWord:= False; TitleFontName:= 'Times New Roman'; TitleFontSize:= 16; TitleFontColor:= $0EAF6B; GridFontName:= 'Arial'; GridFontSize:= 10; GridFontColor:= $FF4A89; SaveFileName:= 'C:\1-Koval.doc'; end; if GridToWord(Form1.StringGrid1, vfw) then begin if vfw^.SaveFileName <> '' then ShowMessage('Создан файл: ' + vfw^.SaveFileName); end; finally Dispose(vfw); end; end;
К uses добавить ComObj.
[h8]
[h8] писал(а):
Вот делал калькулятор, все работает кроме деления на 0, почему?
Member
Статус: Не в сети Регистрация: 31.01.2004 Откуда: moskow
[h8] писал(а):
_SGK писал(а):
Прикольно – молодец, тащусь…
А без стеба ни как?
А ты начальные классы экстерном сдавал?
Народ как быстро определить размер кэшей процессора?
Обьяснюсь раньше определял путем чтения разных блоков от 1 кб до 8 мб
- процесс долгий. Через CPUID там вроде каждый раз надо базу обновлять - вышел новый проц и если нет значения в таблице то "все давай Пока"?
Есть ли еще вариант? Быстро и без зависимости от таблиц....
Member
Статус: Не в сети Регистрация: 01.03.2006 Откуда: Москва
Блин, я имею ввиду не деление на 0 а проверку, ну выражаюсь я так) деление обычное работает, а при делении на 0 ошибку не выводит, ну не знаю че за ...
Про удаление последнего символа, спасибо посмотрю!
Member
Статус: Не в сети Регистрация: 20.09.2005 Откуда: Москва
Есть вопрос, База данных написанная в делфи(Paradox7) есть 2 таблици у главной столбец "Название фирмы сотового" у подчиненной 2 столбца "Название фирмы сотового" и"Модель". Эти таблици связаны по "Название фирмы сотового" мне надо сделать следующее: отредактировать в главной таблице название фирмы(пользователь ввел не правильно название)
на кнопле изменение задаю процедуру
..............
DataModule2.Table1.Edit;
DataModule2.Table1.FieldByName('NazFirm').AsString:=bsSkinEdit1.Text;
DataModule2.Table1.Post;
............................
название отредактировалось а вот во второй таблице пропали данные. Что надо дописать чтобы данные не пропадали при редактировании? Подскажите плиз!
Начал учить Delphi. Подскажите пожалуйста по какой книге лучше всего учится самостоятельно? (желательно чтоб ее можно было скачать) И где можно взять задачки которые нужно выполнять? Допустим сделать программу типа калькулятор, еще чтонить?
Вот делал калькулятор, все работает кроме деления на 0, почему?
Код:
ArgSecond := StrToFloat(edit.Text); if IfArg=1 then OutputValue := ArgFirst+ArgSecond;Edit.Text := FloatToStr(OutputValue); if IfArg=2 then OutputValue := ArgFirst-ArgSecond;Edit.Text := FloatToStr(OutputValue); if IfArg=3 then begin if ArgSecond=0 then begin Edit.Text := 'ERROR'; end else begin OutputValue := ArgFirst/ArgSecond; Edit.Text := FloatToStr(OutputValue); end; end; if IfArg=4 then OutputValue := ArgFirst*ArgSecond;Edit.Text := FloatToStr(OutputValue);
И еще можно как нибудь проще реализовать стирание последнего символа:
Советую книгу Delphi Фаронова (преподаватель МГТУ им. БАумана) название " Программирование на зяыке высокого уровня". Задачки математические могу отфоткать (с методы) и скинуть по почте, но они для студентов выше 2 курса, по кртаным интегралам. Добавлено спустя 1 минуту, 31 секунду Шмендальф , если таблица СтрнгГрид, то просто в коде программы измени название, где столбец называют.
Народ как быстро определить размер кэшей процессора?Обьяснюсь раньше определял путем чтения разных блоков от 1 кб до 8 мб- процесс долгий. Через CPUID там вроде каждый раз надо базу обновлять - вышел новый проц и если нет значения в таблице то "все давай Пока"?Есть ли еще вариант? Быстро и без зависимости от таблиц....
cpuid в помощь. Можно обойтись без таблиц.
Почитай внимательно официальную инфу от интела по этой команде (IA-32 Intel Architecture,Software Developer’s Manual,Volume 2:Instruction Set Reference)
... if (dbtext33.Caption='1')and(dbtext32.Caption=inttostr(par))and(dbtext31.Caption=inttostr(day)) then begin Label[b]1[/b].Caption:=dbtext34.Caption; ...
Это действие повторяется многократно... Скажите как сделать, чтобы после его выполнения номер Label'a менялся(их у меня 30, чтоб для каждого не писать:weep:)
_________________ Весь мир игра, а мы вней монстры...
название отредактировалось а вот во второй таблице пропали данные.
Шмендальф писал(а):
Что надо дописать чтобы данные не пропадали при редактировании? Подскажите плиз!
Для твоего конкретного случая c TTable навскидку можно сделать следующее:
Код:
unit dm2;
interface
uses Windows, SysUtils, Classes, DB, DBTables;
type TDataModule2 = class(TDataModule) DataSource1: TDataSource; DataSource2: TDataSource; Table1: TTable; // Главная Table2: TTable; // Подчиненная procedure Table1BeforeEdit(DataSet: TDataSet); procedure Table1AfterPost(DataSet: TDataSet); procedure Table1BeforeDelete(DataSet: TDataSet); procedure Table1PostError(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction); procedure Table2PostError(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction); private { Private declarations } public { Public declarations } VOF: String; end;
var DataModule2: TDataModule2;
implementation
{$R *.dfm}
procedure TDataModule2.Table1BeforeEdit(DataSet: TDataSet); begin VOF:= Table1.FieldByName('Firm_ID').AsString; end;
// Изменение связанных записей в подчиненной таблице "руками". :) procedure TDataModule2.Table1AfterPost(DataSet: TDataSet); begin Table2.DisableControls; Table2.MasterSource:= nil; while Table2.Locate('Owner_ID', Variant(VOF), [LoCaseInsensitive]) <> False do begin Table2.Edit; Table2.FieldByName('Owner_ID').AsString:= Table1.FieldByName('Firm_ID').AsString; Table2.Post; end; Table2.MasterSource:= DataSource1; Table2.EnableControls; end;
// Удаление связанных записей из подчиненной таблицы "руками". :) procedure TDataModule2.Table1BeforeDelete(DataSet: TDataSet); begin Table2.DisableControls; Table2.First; while not Table2.Eof do Table2.Delete; Table2.EnableControls; end;
// Обработка ошибки при записи значения в главной таблице. procedure TDataModule2.Table1PostError(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction); begin Table1.Cancel; // MessageBox(0, 'Unable to post: Duplicate Value', 'Info', MB_OK + MB_ICONWARNING); Abort; end;
// Обработка ошибки при записи значения в подчиненной таблице. procedure TDataModule2.Table2PostError(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction); begin Table2.Cancel; // MessageBox(0, 'Unable to post: Duplicate Value', 'Info', MB_OK + MB_ICONWARNING); Abort; end;
end.
Предполагается, что индексы созданы и таблицы связаны. Поля: Firm_ID - "название фирмы сотового" из главной таблицы. Owner_ID - "название фирмы сотового" из подчиненной таблицы. Model - данные о модели из подчиненной таблицы. А вообще ИМХО это не наш выбор…
Mutant-13
Mutant-13 писал(а):
Скажите как сделать, чтобы после его выполнения номер Label'a менялся(их у меня 30, чтоб для каждого не писать
Попробуй так:
Код:
procedure SetLblCaptions(Owner: TForm; List: TStrings); var i, j: Integer; begin j:= 0; for i:= 0 to Owner.ComponentCount - 1 do begin if (Owner.Components[i] is TLabel) then begin if j < List.Count then begin (Owner.Components[i] as TLabel).Caption:= List.Strings[j]; inc(j); end else Break; end end end;
В списке помещаются нужные значения и передаются процедуре. Вызов:
Код:
procedure TForm1.Button1Click(Sender: TObject); var SL: TStringList; begin SL:= TStringList.Create; if FileExists('C:\List.txt') then SL.LoadFromFile('C:\List.txt') else begin SL.Add('Привет! :)'); SL.Add('Как жив-здоров?'); SL.Add('Пока.'); end; SetLblCaptions(Form1, SL); SL.Free; end;
Member
Статус: Не в сети Регистрация: 14.08.2004 Откуда: Москва
Ребят - помогите пожалста - я вообще в полном афиге... пишу:
Код:
LPar1:='Attack: ';
где LPar1 - имя одного лэйбла...
Делфа мне пишет... "Incompatible types: 'TLabel' and 'String'" я такого в жизни не видел... в чём косяк может быть? помогите плиз, а то я голову уже сломал
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения