HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 09.08.2009, 11:23
Nullsleep
Познающий
Регистрация: 02.06.2009
Сообщений: 67
Провел на форуме:
237284

Репутация: 54
По умолчанию

mailbrush, напиши в OnCreate строку:
Код:
  Randomize;
И еще вместо твоей функции SubStr я бы написал так:
Код:
  result:=result+symbols[Random(Length(symbols)-1)+1];

Последний раз редактировалось Nullsleep; 09.08.2009 в 11:28..
 
Ответить с цитированием

  #2  
Старый 09.08.2009, 12:08
transserg
Участник форума
Регистрация: 02.07.2008
Сообщений: 132
Провел на форуме:
1035284

Репутация: 52
По умолчанию

привет всем!
возникла сложность в обработке файлика на winapi нужно выделить строки! стандартными способами делфи нехочу делать!
пытаюсь сделать так
Код:
var
  Size:cardinal;
  mas:Array[0..65536] of char;
  Config:array of string;

procedure ReadConfig;
  var
    re:^integer;
    MyFile:integer;
  begin
    MyFile:= Integer(CreateFile(PChar('sittings.txt'), GENERIC_READ+GENERIC_WRITE,FILE_SHARE_READ+FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0));
    GetMem(re,Sizeof(re));
    size:=Getfilesize(MyFile,nil);
    ReadFile(THandle(MyFile), mas, size, LongWord(re^), nil);
   Closehandle(MyFile);
  end;

{$R *.dfm}
Function PosEx(Const SubStr, S: String; Offset: Cardinal = 1): Integer;
var
I,X: Integer;
Len, LenSubStr: Integer;
begin
If Offset = 1 Then
   Result := Pos(SubStr, S)
Else
begin
   I := Offset;
   LenSubStr := Length(SubStr);
   Len := Length(S) - LenSubStr + 1;
   While I <= Len Do
   begin
     If S[I] = SubStr[1] Then
     begin
       X := 1;
       While (X < LenSubStr) And (S[I + X] = SubStr[X + 1]) Do
         Inc(X);
       If (X = LenSubStr) Then
       begin
         Result := I;
         Exit;
       End;
     End;
     Inc(I);
   End;
   Result := 0;
End;
End;

procedure ObrabConfig;
  var
    i,j:integer;
    S:string;
  begin
  i:=1;
  form1.Label2.Caption:=inttostr(Size);
  while i<10771 do
    begin
      j:=posex(#13#10,mas,i);
      S:=copy(mas,i,j);
      i:=j+3;
      j:=0;
      Setlength(Config,high(Config)+2);
      Config[high(Config)]:=S;
      Form1.memo1.lines.Add(S);
      Form1.Label1.Caption:=inttostr(i);
     Application.ProcessMessages;
      if i>=10771 then
      showmessage('ok');
      Sleep(50);
    end;
  end;
но он выводит первою строку норма а потом гонит всякий "шлак"
что я делаю не так?
 
Ответить с цитированием

  #3  
Старый 09.08.2009, 12:34
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


По умолчанию

2 transserg как я понял тебе нужна работа с конфигом. То для таких целей советую юзать виндовую апишку
GetPrivateProfileIntA - читает из конфига число
GetPrivateProfileStringA - чистает из конфига строку
Есть и другие, но тебе они не важны.
Вот пример

Код:
var
 my_int:integer;
 my_str:array[0..255] of chat;
begin
my_int := GetPrivateProfileIntA('config', 'MY_INT_VAL', 20, 'c:\config.ini');
GetPrivateProfileStringA('config', 'MY_STR_VAL', 'defoult value', my_str, 256, 'config.ini');
где
config - название секции
MY_INT_VAL - название параметра
20 - дефолтовое значение если число
c:\config.ini - непосредственно файл
defoult value - дефолтовое значение если строка
256 - размер буфера.

конфиг - стандартного оформления
[config]
MY_INT_VAL = 10
MY_STR_VAL = hello

Последний раз редактировалось slesh; 09.08.2009 в 12:38..
 
Ответить с цитированием

  #4  
Старый 09.08.2009, 12:43
transserg
Участник форума
Регистрация: 02.07.2008
Сообщений: 132
Провел на форуме:
1035284

Репутация: 52
По умолчанию

slesh нет конфиг это просто название файла =) да там настройки для программы моей в каждой строке несколько параметров в другой еще несколько вот и нужно выделить строки, по отдельности =)
 
Ответить с цитированием

  #5  
Старый 09.08.2009, 12:46
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


По умолчанию

а вообще для работы с конфигами есть ряд функций
Описание найдете в инете
GetPrivateProfileIntA
GetPrivateProfileStringA
GetPrivateProfileStructA
GetPrivateProfileSectionNamesA
GetPrivateProfileSectionA

WritePrivateProfileStringA
WritePrivateProfileSectionA
WritePrivateProfileStructA
 
Ответить с цитированием

  #6  
Старый 09.08.2009, 12:53
transserg
Участник форума
Регистрация: 02.07.2008
Сообщений: 132
Провел на форуме:
1035284

Репутация: 52
По умолчанию

спасибо за совет! но всеже если это обычный текстовый файл, допустим книжка в тхт то как быть тогда и выделить строки?
 
Ответить с цитированием

  #7  
Старый 09.08.2009, 12:53
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


По умолчанию

ну если хочешь читать строки на Апи. то как вариант тогда такая алгоритм.
Считываешь в буфер к примеру 256 байт.
далее ищешь символ конца строки #10 или #13#10
Отнимаешь от размера считанных данных позицию этих символов (+/- 1)
и ставишь передвигаешь указатель в файле назад на это значение.
 
Ответить с цитированием

  #8  
Старый 09.08.2009, 13:16
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


По умолчанию

Вот навоял функцию для чтения строк из файла на Win API с поддержкой Win и nix форматов файла.

Код:
function ReadString(h:THANDLE; var s:string; max:integer):boolean;
var
  buf:pchar;
  rb:dword;
  p:dword;
begin
  result := false;
  getmem(buf, max);
  ReadFile(h, buf^, max, rb, nil);
  if rb > 0 then
  begin
    result := true;
    p := pos(#10, string(buf));
    if p = 0 then // если последняя строка
    begin
      s := string(buf);
    end
    else
    begin
      if (p > 1) and (buf[p-2] = #13) then // если Win формат
      begin
        s := copy(buf, 0, p-2);
      end
      else // если NIX формат
      begin
        s := copy(buf, 0, p-1);
      end;
      SetFilePointer(h, p - rb, nil, FILE_CURRENT);
    end;
  end;
  freemem(buf);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  h:THANDLE;
  s:string;
  x:integer;
const
  MAX_LEN = 256;
begin
  h := CreateFile('e:\test.txt', GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
  if h <> INVALID_HANDLE_VALUE then
  begin
    for x := 1 to 10 do
    begin
      if ReadString(h, s, MAX_LEN) then // читаем строку
      begin // если считалась
        memo1.Lines.Add('Строка ' + inttostr(x) + ' - ' + s);
      end
      else break; // прерывем цикл если нет больше строк
    end;
    CloseHandle(h);
  end;
end;
 
Ответить с цитированием

  #9  
Старый 09.08.2009, 15:16
mcflash
Новичок
Регистрация: 16.12.2008
Сообщений: 4
Провел на форуме:
13186

Репутация: 0
По умолчанию

Люди кто нибудь знает Как написать на delphi7 код для отправки смс
 
Ответить с цитированием

  #10  
Старый 09.08.2009, 15:17
mcflash
Новичок
Регистрация: 16.12.2008
Сообщений: 4
Провел на форуме:
13186

Репутация: 0
По умолчанию

Люди кто нибудь знает Как написать на delphi7 код для отправки смс
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Wi-Fi, BT] Задай вопрос - получи ответ! Alexsize Беспроводные технологии/Wi-Fi/Wardriving 2569 10.05.2026 13:27
[jQuery] - Задай вопрос, получи ответ Isis PHP 62 25.12.2009 03:25



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.