Funkcja wstawiająca stały tekst do pliku zawsze na jego końcu

0

Witam, otóż próbuje wpisac do plików różne rzeczy. Nie mialem z tym problemów dopóki nie zapragnąłem wpisać czegoś do pliku za pomocą
function(); i procedure();. Czyli w skrocie chce stworzyc gotową procedure, która będzie wpisywala mi do danego pliku podany przeze mnie stały tekst(zawsze na końcu). Nie wiem do konca jak mam polaczyc zmienne w sekcji var ze zmiennymi w procedurze. Pozdrawiam i czekam na jakies pomysly.

1

Ja proponuję od przeczytania kursu. W każdym kursie pascala (czy turbo czy innego) jest napisane jak tworzyć funkcje i procedury.

0

Tak jak pisał poprzednik. Ale masz coś na zachęte w czystym WinAPI i pisane na szybko pod Delphi 7. Natomiast dla Lazarusa/FPC, należało by dodać za pewne dyrektywę {$MODE DELPHI} zaraz po nagłówku project aby skompilować bez błędów. Sam kod wzięty z części źródła mojej prostej usługi pisanej dla wprawki, bo po co mam wymyślać koło na nowo. Skoro Tobie się nie chce nawet pogooglować i pokombinować. Obyś jednak zrobił to następnym razem. Dział Newbie czy nie - to nie ma znaczenia.

program googlujujesz_albo_giniesz;

{$APPTYPE CONSOLE}

uses
  Windows;

const
  Log_File = 'D:\test.txt';

function AnsiFileExists(const FileName : string) : boolean;
const
  FILE_ATTRIBUTE_REPARSE_POINT = 1024;
var
  FileHandle : THandle;
  WFD : TWin32FindData;
begin
  Result := False;
  FileHandle := Windows.FindFirstFile(PChar(FileName), WFD);
  if FileHandle <> INVALID_HANDLE_VALUE then
  begin
    Result := (WFD.dwFileAttributes and FILE_ATTRIBUTE_REPARSE_POINT = 0)
      and (WFD.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY = 0);
    Windows.FindClose(FileHandle);
  end;
end;

function FileSeek(Handle, Offset, Origin : integer) : integer;
begin
  Result := SetFilePointer(THandle(Handle), Offset, nil, Origin);
end;

function SaveOrAppendTextToFile(AFileName : string; InStr : string; AppendFile : boolean) : boolean;
const
  Append_Arr : array[boolean] of DWORD = (CREATE_ALWAYS, OPEN_ALWAYS);
var
  OutFile : THandle;
  BytesWritten : DWORD;
  OutFileSize : integer;
begin
  OutFile := CreateFile(PChar(AFileName), GENERIC_WRITE,
    FILE_SHARE_READ, nil, Append_Arr[AppendFile], FILE_ATTRIBUTE_NORMAL, 0);
  Result := OutFile <> INVALID_HANDLE_VALUE;
  if Result then
  begin
    OutFileSize := Length(InStr);
    if AppendFile then
    begin
      FileSeek(OutFile, 0, FILE_END);
    end;
    WriteFile(OutFile, InStr[1], OutFileSize, BytesWritten, nil);
    CloseHandle(OutFile);
  end;
end;

function WriteToLog(Str : string) : boolean;
begin
  Str := Str + #13#10;
  Result := SaveOrAppendTextToFile(Log_File, Str, AnsiFileExists(Log_File));
end;

begin
  WriteToLog('Najpierw googluj, kobminuj samodzielnie do bólu, a na forum pisz w ostateczności!');
end.
0
Groza napisał(a)

Witam, otóż próbuje wpisac do plików różne rzeczy.

No no, wysiliłeś się z opisem...

Groza napisał(a)

Czyli w skrocie chce stworzyc gotową procedure, która będzie wpisywala mi do danego pliku podany przeze mnie stały tekst(zawsze na końcu).

Poczytaj o Append lub strumieniach, np. TFileStream i jego właściwości Position;

Groza napisał(a)

Nie wiem do konca jak mam polaczyc zmienne w sekcji var ze zmiennymi w procedurze.

Wyjaśnij dokładniej co potrzebujesz zrobić, bo z Twojego opisu część trzeba się domyślać... Ale jeśli dobrze przypuszczam, to coś kombinujesz ze zmienną globalną modułu i zmienną lokalną procedury; Więc nie kombinuj i nie deklaruj zmiennych globalnych, jeśli nie musisz; A jeśli wartość ze zmiennej globalnej chcesz zapisać razem z wartością zmiennej lokalnej to po prostu ją przekaż w argumencie.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.