[ Delphi / Pascal ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by banned, 6 May 2007.

Thread Status:
Not open for further replies.
  1. NemeZz

    NemeZz Elder - Старейшина

    Joined:
    20 Aug 2008
    Messages:
    102
    Likes Received:
    67
    Reputations:
    3
    использовать сторонние компоненты.
     
  2. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Использовать стандартный TGauge

    ой, туплю, плохо проснулся, прочитал прогрессбар вместо статусбар :D
     
    #6842 GhostOnline, 24 Sep 2010
    Last edited: 24 Sep 2010
  3. Serezzza

    Serezzza Banned

    Joined:
    22 May 2010
    Messages:
    13
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте, подскажите пожалуйста, каким кодом можно вызвать такое окошко, не ставя галку в свойстве NumbersOnly в поле Edit1 ? И возможно ли это?
    Скриншот окошка
     
  4. Artist

    Artist Member

    Joined:
    10 Jul 2010
    Messages:
    89
    Likes Received:
    5
    Reputations:
    0

    Это подсказка. Hint в свойствах компонента.
     
  5. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    Для того, чтобы в Edit1 можно было вводить только цифры, этому окну надо добавить стиль ES_NUMBER
    Code:
    LONG style = GetWindowLong(Edit1->Handle, GWL_STYLE);
    style |= ES_NUMBER;
    SetWindowLong(Edit1->Handle,GWL_STYLE, style);
    
    Тогда, при вводе некорректных символов, всплывет это самое окошко.
    Если же тебе надо подобное окно, но со своим содержанием, то рой в сторону BalloonTip
     
    #6845 alexey-m, 24 Sep 2010
    Last edited: 24 Sep 2010
  6. ADR-007

    ADR-007 Member

    Joined:
    12 Jul 2010
    Messages:
    218
    Likes Received:
    9
    Reputations:
    0
    а как сохранить структуру в файле? (забіл название функціи...)
     
  7. NemeZz

    NemeZz Elder - Старейшина

    Joined:
    20 Aug 2008
    Messages:
    102
    Likes Received:
    67
    Reputations:
    3
    Создай файл из таких структур и просто записывай их обычным write
     
    1 person likes this.
  8. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    Небольшой примерчик:
    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;
     
    1 person likes this.
  9. Vlad&slav

    Vlad&slav Member

    Joined:
    1 Jan 2009
    Messages:
    207
    Likes Received:
    41
    Reputations:
    9
    а когда я делаю в делфи консоле апликейшн как мне консоль скрыть?
     
  10. ADR-007

    ADR-007 Member

    Joined:
    12 Jul 2010
    Messages:
    218
    Likes Received:
    9
    Reputations:
    0
    у меня есть масив структурі из текста и масивов текста если зделас масиви статичними будеш большой вес структури... может в както другим способом?

    и 255 символов ет мало...
     
    #6850 ADR-007, 25 Sep 2010
    Last edited: 25 Sep 2010
  11. life:)

    life:) Banned

    Joined:
    9 Sep 2010
    Messages:
    98
    Likes Received:
    18
    Reputations:
    8
    Короче помогите с задачкой не могу решить(
    var a,b,c : Longint;
    Begin
    a:=9000000;
    b:=100;
    Writeln (a+b); , 'Всего Людей';
    readln
    end.

    ---------
    Выбивает Ошибку 113
    Условие Задачи:
    Население Москвы равняется а=9000000 жителей. Население Нью-Васюков равняется b=1000 жителей. Напишите программу, которая определяет разницу в числе жителей между двумя городами. Используйте переменные величины.
     
  12. LBC

    LBC Banned

    Joined:
    10 Sep 2010
    Messages:
    49
    Likes Received:
    3
    Reputations:
    5
    Помогите плиз. Как из Edit1, в котором находиться URL файла, допустим http://site.ru/file.exe достать текст имя файла, в данном случае file.exe , и прописать в Edit2.
     
  13. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    PHP:
    Edit2.Text := Copy(Edit1.Textlength(Edit1.Text) - pos('/'ReverseString(Edit1.Text)) + 2);
     
  14. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Удалить {$APPTYPE CONSOLE} или как там из dpr файла
     
  15. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Writeln(a - b); //всего лишь

    Что интересно, никто из троих последних спрашивающих даже не отписался помогло/не помогло, у и нахер вообще помогать тогда?
     
    #6855 GhostOnline, 25 Sep 2010
    Last edited: 26 Sep 2010
  16. ADR-007

    ADR-007 Member

    Joined:
    12 Jul 2010
    Messages:
    218
    Likes Received:
    9
    Reputations:
    0
    после виполнения процедури при закритии проги відайот ошибку 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.
     
  17. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    Да....после такого кода это неудивительно)
    1: Зачем тебе 2 буфера под одну и туже структуру?
    2: А если текст в строке Memo1.Lines.Strings будет больше чем 10 символов, что тогда? ( str:string[10]; )
     
    #6857 alexey-m, 26 Sep 2010
    Last edited: 26 Sep 2010
  18. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    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;
     
  19. ADR-007

    ADR-007 Member

    Joined:
    12 Jul 2010
    Messages:
    218
    Likes Received:
    9
    Reputations:
    0
    сохранит сохранил а загрузить не могу)
    указатель пригаєт на динамическую пам’ять а она как извесно бистро уничтожаєтса...
    хз может я просто спать хочу и тому не вижу решения)
    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;
     
    #6859 ADR-007, 26 Sep 2010
    Last edited: 26 Sep 2010
  20. ADR-007

    ADR-007 Member

    Joined:
    12 Jul 2010
    Messages:
    218
    Likes Received:
    9
    Reputations:
    0
    спс но через FileStream проще) проблему нашол и устранил... правда так и понял почему она біла)
     
Thread Status:
Not open for further replies.