Pętla for-in

0

Cześć.

Czy w Delphi istnieje możliwość iterowania po elementach tablicy w taki sposób:

for znak in ['A','B','C'] do
...

Oczywiście ten przykład mi nie działa. Co prawda kompilator nie twierdzi, że błąd jest w forze, ale zgłasza internal error podczas próby kompilacji czegoś takiego.

Dodatkowo, czy istnieje w Delphi możliwość inicjowania zmiennych - obiektów w sposób zbliżony do C#

obiekt = new Obiekt() { nazwa='abc', opis='ala ma kota' };

Widziałem, że mogę tak zrobić z const record

const
mojRekord : TMojRekord = (nazwa:'abc'; opis:'ala ma kota');

ale potrzebowałbym takiej możliwości w ciele funkcji/procedury.

Pozdrawiam
Szczaw

0

Iterowanie po kolekcji jest w Delphi od wersji 2005.

0
szczaw napisał(a)
for znak in ['A','B','C'] do

Oczywiście ten przykład mi nie działa.

„Oczywiście” masz stare Delphi. Dokładnie taka składnia kompiluje się i działa. Przy czym znak

 musi być wcześniej zdefiniowany:
```delphi
{$APPTYPE CONSOLE}
var znak:char;
begin
  for znak in ['A','B','C'] do
    write(znak);
  readln;
end.

Widziałem, że mogę tak zrobić z const record

Ściślej: ze zmiennymi globalnymi. Rzeczywiście nie da się tak dla zmiennych lokalnych. Przynajmniej w Delphi 2006, nie mam jak sprawdzić w nowszych bo trial Delphi XE chwilowo mi się skończył.

0
Azarien napisał(a)

„Oczywiście” masz stare Delphi. Dokładnie taka składnia kompiluje się i działa. Przy czym znak

musi być wcześniej zdefiniowany:

```delphi
{$APPTYPE CONSOLE}
var znak:char;
begin
for znak in ['A','B','C'] do
write(znak);
readln;
end.

Oczywiście nie mam starego Delphi, chyba że po XE coś jeszcze wyszło.
Albo ja mam pecha, albo XE zawiera sporo błędów bo podobnie dziwne problemy mam TRegEx (o czym pisałem jakiś czas temu na forum).

No nic, w każdym razie dziękuję wszystkim za odpowiedź.

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