Edycja rekordów w pliku

0

Witam. Mam problem z edytowaniem rekordów w pliku.
Jaki muszę dać warunek aby sprawdzał czy wprowadzono coś z klawiatury?

liczba jest typy byte

wtite('podaj liczbe);
readln(liczba);

if liczba = ..... then begin i dalej wiem co :D

Z góry dziękuję za pomoc ;)
Pozdro

0

Ja na miejscu moda wywalił bym do kosza czytając nick autora...

0

Wczytaj najpierw liczbę jako string i następnie za pomocą procedury

Val

zamień na liczbę. Przy okazji sprawdzisz czy wprowadzono liczbę.

0

Jaki muszę dać warunek aby sprawdzał czy wprowadzono coś z klawiatury?

Żaden. Przecież Readln czeka dopóki coś wprowadzisz. Jeszcez raz pokazujesz że logika to coś tobie obcego.

Wczytaj najpierw liczbę jako string i następnie za pomocą procedury Val zamień na liczbę. Przy okazji sprawdzisz czy wprowadzono liczbę.

Osobiście StrToInt uważam za lepsze, ale wymaga to znajomości systemu wyjątków. Natomiast brawa należą się za zrozumienie wypowiedzi pytacza.

Ja na miejscu moda wywalił bym do kosza czytając nick autora...

Gdybym stosował podobną zasadę, to nigdy nie pomógłbym ci.

0

Namieszałeś...

  repeat
    writeln('podaj liczbę');
    readln(text);
    val(text,w,error);
  until error=0;
0
  repeat
    writeln('podaj nie liczbę liczbę');
    readln(text);
    val(text,w,error);
  until error<>0;
0

Już się pogubiłem co chcesz osiągnąc. Piszesz coś o "nie wchodzeniu do pętli" po if'ie, a tutaj w if'ie nie wykonujesz żadnej pętli. Poza tym begin powinien być zawsze w nowej linijce. Formatuj kod po ludzku to się nie zamotasz. Jeżeli nie umiesz samodzielnie tego robić to wspomóż się gotowymi narzędziami jak formatterem kodu w alternatywnej wersji GExperts lub JEDI Code Formatter itp.

0

Chodzi o to, że ta pętla przepuszcza mi litery i liczby a powinna tylko przepuszczać litery. Nie rozumiem dlaczego tak, się dzieje

Bo ty nie uczysz się programować, tylko czegoś co przypomina programowanie. Mimo że pytasz tutaj od miesięcy, nadal nie rozumiesz działania pętli, można mieć wątpliwości czy wiesz jak działa konstrukcja IF.
Czy na prawdę tak trudno jest przeczytać ze zrozumieniem kurs?
Czy na prawdę tak trudno jest umieć programować jak ludzie, używając googla do znalezienia potrzebnych funkcji RTL i kursów?
No ale przecież ty do końca życia będziesz tutaj wchodzić i pytać czemu pętelka nie działa tak jak chcesz... Bo tobie się coś wydaje... Smutne, ale prawdziwe.

0

Tobie chyba chodzi o coś takiego, a do tego nie potrzeba mieszać Val, bo o ile dobrze zrozumiałem to Ty chcesz wprowadzić tekst niezawierający w ogółe cyfr. I jeżeli taki zostanie wprowadzony to kontynuuować działanie programu wychodząc z pętli. Jeżeli tak to:

program banalne_podstawy_panie_banalne_podstawy;

{$APPTYPE CONSOLE}

uses
  crt;

function IsDigitInText(SourceText : string) : boolean;
var
  I : integer;
begin
  Result := False;
  for I := 1 to Length(SourceText) do
  begin
    Result := SourceText[I] in ['0'..'9'];
    if Result then
    begin
      Break;
    end;
  end;
end;

var
  Text : string;
begin
  repeat
    ClrScr;
    Write('Podaj tekst nie zawierajacy cyfr arabskich: ');
    Readln(Text);
  until not IsDigitInText(Text);
  Writeln('Koniec programu - nacisnij ENTER');
  Readln;
end.

Pisane pod Delphi 7 z jakimś w miarę aktualnym (z 2003 roku) modułem crt (nie chciało mi się już googlować za innym, taki miałem na dysku). Ale na FPC też się raczej skompiluje prawidłowo. Ewentualnie z dodamiem dyrektywy kompilatora $MODE DELPHI. I na przyszłośc zanim zaczniesz cokolwiek pisać w jakimś języku poczytaj kompendium albo jakiś kurs z podstawami języka. Ok, ja to rozumiem, że piszesz w dziale Newbie. Że może od niedawna zacząłeś naukę. Jednak tak proste rzeczy można ogarnąc po dłuższej chwili samodzielnego kombinowania i zapoznania się z kursem języka. A tym bardziej na prawdę tak banalnego składniowo i łatwego do nauki na start jak (Obiektowy) Pascal. Wystarczy tylko chcieć, a nie z każdym pytaniem lecieć na forum i pytać. Nie tędy droga niestety ;/

0

wiem jak działa każda petla i instrukcja..

To ty powinieneś pomagać nam, nie my tobie. Bo nie ma tutaj ani jednej osoby która znałaby każdą instrukcję.

Ok, ja to rozumiem, że piszesz w dziale Newbie.

Błąd. On siebie ceni i postuje w dziale Delphi. Tylko moderatorzy przenoszą.

0

A ty dalej swoje.. Nie został rozwiązany, bo ja chce wiedzieć gdzie w mojej pętli jest błąd.. I dlaczego ma być tak a nie inaczej.. -

Problem jest w tym, że korzystałeś z procedury Val, która nie służy do sprawdzenia czy w tekstcie nie ma w ogóle cyfr, tylko do tego czy dany tekst jest liczbą całkowitą. Czyli zadziała na pewno dla tekstu do 11 znaków, ponieważ Low(Integer) = -2147483648, a High(Integer) = 2147483647. Nie potrzebujesz wartości wynikowej typu Integer z pobranego tekstu, a jak rozumiem chcesz sprawdzić czy tekst nie zawiera w ogółe cyfr arabskich. Dlatego najlepiej napisać sobie do tego celu prostą funkcję, która pokazałem wcześniej. Poza tym taki kod jak poniżej również zwróci w zmiennej Code 0, bo procedura Val pozwala też na przekonwertowanie wartości szesnastkowej na dziesiętną. A jak widzisz tekst $C na pewno nie zawiera cyfry arabskiej. A programista powinien się starać żeby jego kod był możliwie "idiotoodporny", a należy przewidzieć że zdarzy się użytkownik, który może chcieć sobie wpisać tekst zaczynający się od znaku $ i nie zostanie on przez program dopuszczony, a według założeń programisty powinien. I na przyszłośc radzę grzeczniej, a nie teksty w stylu "a ty dalej swoje". Ja dalej swoje będę powtarzał. Nie znasz podstaw i nie chcesz się ich chyba nauczyć. A jak się Tobie pisze, że zastosowanie procedury Val w tym przypadku jest błędem to niestety wtedy znowu "ty dalej swoje". Sformatuj swój kod porządnie i go przeanalizuj linijka po linijce. W razie czego zapoznaj się z Debuggerem i tym jak go używać. Poza tym dostałeś gotowy kod, to sobie go przeanalizuj. Twój kod, pod którym @Patryk27 napisał, ze to "katastrofa" na prawdę taką katastrofą był, nie tylko ze względu na brak formatowania. Był nielogiczny. Coś tam po omacku "dłubałeś", sam chyba nie bardzo wiedziałeś co chciałeś osiągnąć. Jeśli nie pasuje Tobie moje rozwiązanie to ok, nie ma przymusu. Rób po swojemu, ale odrzucając sugestie z rozwiązaniem to się raczej poprawnych nawyków programistycznych i pisania prawidłowego kodu - według mnie - nie nauczysz :/ Wiem gotowcami się Was leniuchów krzywdzi, ale jak widze jak coś tam dłubiesz, motasz się, nie do końca wiadomo co chcesz osiągnąc, bo nie nakreśliłeś tego w pierwszym postcie wątku, to wziąłem szybko "machnąłem" przykład żeby Tobie pokazać jak to na przykład powinno wyglądać prawidłowo.

//...
var
  S : string;
  V, Code : integer;
begin
  S := '$C';
  Val(S, V, Code);
  Writeln(Code);
  Readln;
end.
//...

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