Czy do wyrażeń regularnych potrzebne są dodatkowe biblioteki?

0

Witam zauważyłem problem z regular expresion które w moim programie wyszukuje cyfry i na moim komputerze gdzie jest zainstalowany delphi 10.2 działa, a na innym nie. Czy do regular expresion sa potrzebne jakies biblioteki które musza być instalowane na komputerze.

0

A możesz pokazać kod ?

0

Jeżeli używasz standardowych modułów z Delphi to na pewno nie są potrzebne. Chyba, że zaznaczyłeś "Link with runtime packages" w opcjach projektu ale wtedy gdyby na tamtym komputerze nie było potrzebnych bibliotek (BPL nie DLL) program najprawdopodobniej by się nie uruchomił.
Przyczyna prawdopodobnie jest gdzieś w kodzie programu raczej coś innego wcześniej idzie nie tak ale trudno wróżyć z fusów jak nie podałeś kodu.

0

Byłoby jeszcze fajnie gdybyś napisał jak się objawia to, że nie działa program. Sypie błędami, czy coś w tym stylu. Na samo pytanie czemu nie działa, możemy Ci odpowiedzieć: "Gdzieś jest błąd" ;)

1

Wszyscy tacy chętni do pomocy z niczego (chodzi mi o to, że op napisał tyle co nic :D), to może i ja wrzucę swój problem na forum? ;-)
A problem jest z niczego :/

0

Przepraszam już podaję opis problemu oto kod programu

procedure TMainForm.DrawCNC;
var
  liczbax, liczbaz, a, b: double;
  I, j, k, m, x2, z2, dx, dZ, xxx, zzz: integer;
  v: Variant;
  text: string;
  Z, X, xx, zz: string;
begin
  dx := Image1.Width div 2;
  dZ := Image1.Height div 2;
  a := dx;
  b := dZ;
  SetLength(tablica, (ActiveMDIChild as TMDIChild).SynEdit1.Lines.Count);
  for I := 0 to (ActiveMDIChild as TMDIChild).SynEdit1.Lines.Count - 1 do  //ile wierszy
  begin
    SetLength(tablica[I], 2);  //ustawienie wielkosci tablicy
    text := (ActiveMDIChild as TMDIChild).SynEdit1.Lines[I];  //przypisanie wiersza do zmiennej text
     Z := TRegEx.Match(text, '(?<=Z)[+-]?[0-9]+(\.[0-9]+)|(?<=Z)-.[0-9]+|(?<=Z).[0-9]+').Value;
    X := TRegEx.Match(text, '(?<=X)[+-]?[0-9]+(\.[0-9]+)|(?<=X)-.[0-9]+|(?<=X).[0-9]+').Value;
    if Z = '' then
      zz := zz
    else
      zz := Z;  
    if X = '' then
      xx := xx
    else
      xx := X;  
    begin
      tablica[I][0] := safeFloat(xx);
      tablica[I][1] := safeFloat(zz);
    end;
  end;
  begin
    Memo1.Clear;
    for j := 0 to length(tablica) - 1 do
      Memo1.Lines.Add((floattostr(tablica[j][0])) + ' ' + (floattostr(tablica[j][1])));
  end;
  begin
    Image1.Canvas.Pen.Style := psSolid;
    Image1.Canvas.Pen.Width := 2;
    Image1.Canvas.MoveTo(Image1.Width div 2, Image1.Height div 2);
    for I := 0 to length(tablica) - 1 do
    begin
      xxx := (Round(tablica[I][0]));
      zzz := (Round(tablica[I][1]));
      Image1.Canvas.LineTo(dx + zzz, dZ - xxx);
    end;
    IMAGE1.Refresh;
  end;
end;

zrobiłem wstępne tymczasowe memo aby widzieć wyszukiwane cyfry, które są po X i po Z i problem jest taki że na kompie gdzie jest delphi w memo sa cyfry wyszukane z tekstu, a na innym komputerze sa same zera. Program wyszukuje cyfry z kodu cnc i rysuje na osi współrzędnych.

0

Ja się nie znam ale czy te wyrażenia nie są że tak powiem z D wzięte? Podaj przykładowe dane (najlepiej kilka), które mają pasować do wzorca i co powinno zostać zwrócone.

0

W pierwszym zapytaniu informowałem że to wyrażenie działa i wyszukuje prawidłowo i wyodrębnia cyfrę np X1.0 X1 X .1 X .111 dlatego jest takie długie ale jest prawidłowe i działa na komputerze gdzie jest delphi 10.2 a na innym komputerze tez z win 10 i bez delphi są same zera. Pytanie o pomoc chodziło jaka jest przyczyna takiej sytuacji jeśli są zera. Zaznaczam że nie jestem żadnym programistą delphi raczej uczę się i dużo nie rozumiem ale próbuję może to kogoś śmieszyć ale mi to sprawia radość że cokolwiek mi wychodzi.

0

A dane w SynEdit1 wyświetlają się prawidłowo na komputerze bez Delphi?

1

Hej. Znów na szybko, bo goszczę tutaj "tak często" jak śmierdzący i pijani bezdomni w noclegowniach w w Polsce [bo wolą capić i mnie drażnić kiedy przemieszczam się Komunikacją Miejską zamiast z naszych podatków skorzystać z pomocy i wyjść z tego szamba w jakie się stoczyli i to oczywiście złożony problem, ale nie byłbym sobą jakby rzadko tutaj bywając nie zaczął posta od nietypowego wstępu - tak raz na jakiś czas ;)].

Do sedna. Osobiście mogę polecić do wyrażeń regularnych moduł dostępny na: https://regexpstudio.com/en/index.html - bez problemów, kiedyś mi polecono zapoznać się z tematyką wyrażeń regularnych, kiedy mozolnie wyłuskiwałem tekst ze stron HTML jakimiś dziwnymi funkcjami, a do tej pory nie okiełznałem parserów tego języka [tak wiem, że nie zaleca się parsować treść stron HTML dla wyłuskania danych tą metodą ale jeśli mam rzeźbić coś i się motać, to polecę na szybko a kod jest dla mnie i optymalność przy konkretnych danych nie ucierpi ;)]. Także są dema, no i dokumentacja. Nie ma z tym modułem co wiem z doświadczeń problemów. Ale autor wątku może nam podać przykład i co chciałby wyłuskać :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1