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.
A możesz pokazać kod ?
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.
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" ;)
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 :/
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.
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.
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.
A dane w SynEdit1
wyświetlają się prawidłowo na komputerze bez Delphi?
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ć :)