Skocz do zawartości

[Delphi] buildbyte


gnysek

Rekomendowane odpowiedzi

  • Administratorzy

Brakuje mi funkcji buildbyte z 39dlla i chciałem sobie zrobić jej odpowiednik pod delphi, skróciłem do 4 liczb i kod gmla:

 

GML
return ( argument0 & 1 ) | ( ( argument1 & 1 ) << 1 ) | ( ( argument2 & 1 ) << 2 ) | ( ( argument3 & 1 );

 

przerobiłem na:

 

function buildtype(b1:integer; b2:integer; b3:integer; b4:integer):integer;
begin
  result := (( b1 and 1 ) or (( b2 and 1) shl 1) or (( b3 and 2) shl 1) or (( b4 and 1) shl 3));
end;

 

ale to źle działa, bo zawsze wychodzi mi 2.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Zwraca mi kurde jakieś errory. No nic, to nie jedyny błąd mojego programu, szczerze powiedziawszy akurat ta funkcja może nawet zwracać mi od razu zero i też będzie dobrze. Jeżeli będę miał dalej z tym problem zgłoszę się za kilka dni :D

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Ok, wyglada na to, że jest dobrze.

Mam inny problem teraz.

Jest funkcja:

 

var
  EOFound : boolean;
  Res: TSearchRec
begin

EOFound:= False;
   if FindFirst(input+'\*', faAnyFile - faDirectory, Res) < 0 then
       exit
   else
   while not EOFound do
    begin
    ...
    showMessage( Res.Name );
    ...
      EOFound:= FindNext(Res) <> 0;
   end;
   FindClose(Res);
end

 

No i Res.Name poakazuje nazwy plików, ale od razu zmienia mi na małe literki, a ja potrzebuję też widzieć wielkie litery w nazwie, inczaej psuje mi to cały skrypt. Ktoś ma pomysł ?

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Wiesz co, założenie jest takie, że ten skrypt tworzy paczkę zasobów do Game Makera i musiał bym teraz spędzić kilka godzin, żeby przeszukać obiekty i pozmieniać nazwy zasobom na małe litery.

 

Edit: z jakiegoś powodu przypisanie Res.Name do innej zmiennej zmieniało litery na małe - w obu zmiennych.

Odnośnik do komentarza
Udostępnij na innych stronach

masz moje gg? bo sprawdziłem to i przy wyszukiwaniu nazwy plików nie są zamieniane na mniejsze litery a oto przykład

 

function GetSpecialFolderPath(const Folder: Integer): string;
var
  Path: array[0..MAX_PATH] of Char;
begin
  SHGetSpecialFolderPath(0, Path, Folder , False);
  Result := Path;
end;

procedure TForm1.FormCreate(Sender: TObject);
const
CSIDL_PROFILE = 40;
var
  path : string;
  SearchResult : TSearchRec;
begin
  path := GetSpecialFolderPath(CSIDL_PROFILE);
  path := path + '\Dane aplikacji\Nowe Gadu-Gadu\';
  if FindFirst(path+'*.*', faDirectory, SearchResult) = 0 then
  begin
    repeat
     if (SearchResult.Name <> '.') then
     begin
      if (SearchResult.Name <> '..') then
      begin
        showmessage(SearchResult.Name);
        sleep(100);
      end;
     end;
    until FindNext(SearchResult) <> 0;
    FindClose(searchResult);
  end;
end;

 

zwraca nazwy takie jakimi są z dużymi i małymi literami. musiałeś gdzieś w kodzie umieścić funkcje lowercase bądź dać złą ścieżkę do szukania...

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Było tak:

begin
       showMessage( Res.Name ); //duze litery np.: sprMask1.gif

      _fileext := ExtractFileExt( StrLower ( pchar(Res.Name) ) );
      
      showMessage( Res.Name ); // już małe litery np.: sprmask1.gif
      ...

 

Nom i nie wiem dla czego, nagle Res.Name ma małe litery.

Ale przed _fileext zrobiłem sobie zmienną _name i przypisałem Res.Name, dzięki czemu potem mam nadal dostęp do nazwy pliku z duzymi literami i jest ok. Ważne, ze działa, nie ważne jak xD

Jeszcze się zastanawiam, czy do wersji konsolowej tego nie przepisać, to będzie dopiero lekkie.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

No cóż, nigdy nie przypuszczałem, że jak napiszę a=0; b = a + 5;, to a i b będą sobie równe, ale widocznie w Delphi wszystko jest możliwe...

Kto by pomyślał, że poza zwróceniem wartości modyfikowane są zmienne?

Dzięki za info.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...