Здравствуйте, подскажите пожалуйста, каким кодом можно вызвать такое окошко, не ставя галку в свойстве NumbersOnly в поле Edit1 ? И возможно ли это? Скриншот окошка
Для того, чтобы в Edit1 можно было вводить только цифры, этому окну надо добавить стиль ES_NUMBER Code: LONG style = GetWindowLong(Edit1->Handle, GWL_STYLE); style |= ES_NUMBER; SetWindowLong(Edit1->Handle,GWL_STYLE, style); Тогда, при вводе некорректных символов, всплывет это самое окошко. Если же тебе надо подобное окно, но со своим содержанием, то рой в сторону BalloonTip
Небольшой примерчик: Code: procedure WriteMyRecord(FileName: String); type // Какая-то твоя структура PMyRecord = ^TMyRecord; TMyRecord = packed record Data1: Integer; Data2: Byte; end; ArrRecord = array of TMyRecord; var hFile: THandle; szBuff: Integer; dwBytesWritten: DWORD; AMyRecord: PMyRecord; begin // Открываем\создаем файл hFile:= CreateFile(PChar(FileName), GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); if hFile <> INVALID_HANDLE_VALUE then try szBuff:= SizeOf(TMyRecord)*10; // Выделяем память под массив из 10 записей GetMem(AMyRecord,szBuff); // тут заполнение записей данными // .... ArrRecord(AMyRecord)[0].Data1:= $00FF00FF; ArrRecord(AMyRecord)[1].Data1:= $00550055; ArrRecord(AMyRecord)[1].Data2:= $FF; // .... // Указатель на конец файла SetFilePointer(hFile,0,nil,FILE_END); // Запись в файл WriteFile(hFile, AMyRecord^, szBuff, dwBytesWritten, nil); if dwBytesWritten = szBuff then MessageBoxA(0,'Write AMyRecord Ok','WriteMyRecord',MB_ICONINFORMATION) else MessageBoxA(0,'Error write AMyRecord','WriteMyRecord',MB_ICONERROR); finally FreeMem(AMyRecord, szBuff); CloseHandle(hFile); end; end;
у меня есть масив структурі из текста и масивов текста если зделас масиви статичними будеш большой вес структури... может в както другим способом? и 255 символов ет мало...
Короче помогите с задачкой не могу решить( var a,b,c : Longint; Begin a:=9000000; b:=100; Writeln (a+b); , 'Всего Людей'; readln end. --------- Выбивает Ошибку 113 Условие Задачи: Население Москвы равняется а=9000000 жителей. Население Нью-Васюков равняется b=1000 жителей. Напишите программу, которая определяет разницу в числе жителей между двумя городами. Используйте переменные величины.
Помогите плиз. Как из Edit1, в котором находиться URL файла, допустим http://site.ru/file.exe достать текст имя файла, в данном случае file.exe , и прописать в Edit2.
Writeln(a - b); //всего лишь Что интересно, никто из троих последних спрашивающих даже не отписался помогло/не помогло, у и нахер вообще помогать тогда?
после виполнения процедури при закритии проги відайот ошибку AV Code: tmyrecord = packed record str:string[10]; end; TAmy = array of tmyrecord; PmyRecord = ^tmyRecord; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var szBuff: Integer; AMyRecord: PMyRecord; i:Integer; a:tamy; f:TFileStream; begin szBuff:= SizeOf(TMyRecord)*10; // Выделяем память под массив из 10 записей GetMem(AMyRecord,szBuff); // тут заполнение записей данными // .... SetLength(a,Memo1.Lines.Count); for I := 0 to Memo1.Lines.Count - 1 do a[i].str:=Memo1.Lines.Strings[i]; Tamy(aMyrecord):=a; f:=TFileStream.Create('dat',fmCreate); f.Write('11111',5); f.Write(AMyRecord^,szBuff); f.Free; FreeMemory(AMyRecord); end; end.
Да....после такого кода это неудивительно) 1: Зачем тебе 2 буфера под одну и туже структуру? 2: А если текст в строке Memo1.Lines.Strings будет больше чем 10 символов, что тогда? ( str:string[10]; )
Code: procedure WriteMyRecord(FileName: String; Memo: TMemo); type TStr = array[0..9] of Char; ArrRecord = array of TStr; var hFile: THandle; szBuff: Integer; Count,i: Integer; lpMem: Pointer; dwBytesWritten: DWORD; begin // Открываем\создаем файл hFile:= CreateFile(PChar(FileName), GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); if hFile <> INVALID_HANDLE_VALUE then try Count:= Memo.Lines.Count; szBuff:= SizeOf(TStr)*Count; // Выделяем память под массив из Count записей lpMem:= GetMemory(szBuff); // заполнение записей данными for i:= 0 to Count-1 do CopyMemory(@ArrRecord(lpMem)[i],Pointer(Memo.Lines.Strings[i]), SizeOf(TStr)); // Указатель на конец файла SetFilePointer(hFile,0,nil,FILE_END); // Запись в файл WriteFile(hFile, lpMem^, szBuff, dwBytesWritten, nil); if dwBytesWritten = szBuff then MessageBoxA(0,'Write Ok','',MB_ICONINFORMATION) else MessageBoxA(0,'Error write',nil,MB_ICONERROR); finally FreeMemory(lpMem); CloseHandle(hFile); end; end;
сохранит сохранил а загрузить не могу) указатель пригаєт на динамическую пам’ять а она как извесно бистро уничтожаєтса... хз может я просто спать хочу и тому не вижу решения) Code: tmyrecord = record str:string[10]; end; TAmy = array of tmyrecord; PmyRecord = ^tmyRecord; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject);[B] //save[/B] var szBuff: Integer; AMyRecord: PMyRecord; i:Integer; f:TFileStream; begin szBuff:= SizeOf(TMyRecord)*10; // Выделяем память под массив из 10 записей GetMem(AMyRecord,szBuff); // тут заполнение записей данными // .... for I := 0 to Memo1.Lines.Count - 1 do Tamy(aMyrecord)[i].str:=Memo1.Lines.Strings[i]; f:=TFileStream.Create('dat',fmCreate); f.Write(AMyRecord^,szBuff); f.Free; FreeMemory(AMyRecord); end; [B]procedure TForm1.Button2Click(Sender: TObject); //load[/B] var szBuff: Integer; AMyRecord: pointer;//PmyRecord; p:pointer; i:Integer; f:TFileStream; begin szBuff:= SizeOf(TMyRecord)*10; GetMem(AMyRecord,szBuff); //видилаю пам’ять и ставлю указатель f:=TFileStream.Create('dat',fmOpenRead); f.Read(AMyRecord,szBuff); [B] //указатель сцука передвигаетса на динамичискую пам’ять котора самоуничтажаєтса[/B] f.Free; Memo1.Clear; for i := 0 to 9 do Memo1.Lines.Add(tamy(AMyRecord)[i].str); {} end;