Überlauf des Index

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Überlauf des Index

Beitrag von Maik81SE »

Moin und angenehmen Abend zusammen.

Ich kann mir gerade nicht helfen, ob (was mit Sicherheit der Fall sein wird) ich eine Großen Denkfehler habe, oder ob es einfach nur an dem Rechner liegt, mit dem Ich Programmierer, wobei Letzteres würde ich schon deshalb ausschließen, da die Zeile, auf welche ich mich im folgenden Beziehe ja ausgeführt wird. :o

Folgender Sachverhalt Steht zur Aussage/Tatsache

in einer Unit, Speichere ich eine TStringlist auf folgender Art.

Code: Alles auswählen

procedure TEinnahme.SetItem;
var
  a, d, m, Einnahme                              : byte;
  s                                              : string;
begin
  a                                              := 0;
  if PConst.FFilename <> '' then begin
    // Daten speichern
    if FileExists(PConst.FFilename) then DeleteFile(PConst.FFilename);
    with TIniFile.Create(PConst.FFilename) do try
      for m := 1 to 12 do
        for d := 1 to 31 do
          for _einnahme := Low(Items) to High(Items) do
            if Items[_einnahme, d, m].Eingenommen then begin
              Einnahme                           := _Einnahme;
              s := Format('%.2d-%.2d; %.2d. Einnahme', [d, m, _einnahme+1]);
              WriteBool(s, 'Eingenommen', Items[_einnahme][d, m].Eingenommen);
              WriteString(s, 'Schlagwort', Items[_einnahme][d, m].Schlagwort);
              WriteTime(s, 'Zeit der Einnahme', Items[_einnahme][d, m].Time);
              WriteString(s, 'Stärke', Items[_einnahme][d, m].Day_Info);
              WriteString(s, 'Schmerzen', Items[_einnahme][d, m].Schmerz);
              WriteString(s, 'Medikament', Items[_einnahme][d, m].Medikament);
              WriteFloat(s, 'Dosis', Items[_einnahme][d, m].Dosis);
              WriteFloat(s, 'Menge an ' + Items[_einnahme][d, m].Medikament, Items[_einnahme][d, m].Menge);
              WRiteFloat(s, 'Größe der Einnahme', Items[_einnahme][d, m].Tablette);
              for a := 0 to (Items[_einnahme][d, m].Bemerkung.Count - 1) do
                if Items[_einnahme][d, m].Bemerkung[a] <> '' then 
                  WriteString(s, 'Bemerkung'+inttostr(a+1), Items[_einnahme][d, m].Bemerkung[a]);
              WriteString(s, 'Last', IntToStr(a));
              end;
      finally
        Free;
        _Einnahme                                := Einnahme;
        end;
    end;
end;
Diese wird auch anstandlos ausgeführt.

Wenn ich hingegen die Zeile for a := 0 to (Items[_einnahme][d, m].Bemerkung.Count - 1) do in einer anderen Unit 1:1 verwende und Lediglich die Array-Variablen bzw die Zählvariable umbenenne (Was ja nicht der Grund sein sollte/kann/darf)

Code: Alles auswählen

 Procedure auszug
   with Control_Edit.memo1.Lines do begin
      Add(IntToStr(_einnahme + 1) + '. Einnahme:');
      Add('Schlagwort: ' + Items[_einnahme][xy.x, xy.y].Schlagwort);
      Add('Stärke: ' + Items[_einnahme][xy.x, xy.y].Day_Info);
      Add('Schmerzen: ' + Items[_einnahme][xy.x, xy.y].Schmerz);
      Add('Medikament: ' + Items[_einnahme][xy.x, xy.y].Medikament);
      Add('Dosis: ' + FloatToStr(Items[_einnahme][xy.x, xy.y].Dosis, DefaultFormatSettings));
      Add('Zeit der Einnahme: ' + TimeToStr(Items[_einnahme][xy.x, xy.y].Time, DefaultFormatSettings));
      for b := 0 to (Items[_einnahme][xy.x, xy.y].Bemerkung.Count - 1) do
        Add('Bemerkung Zeile' + IntToStr(b + 1) + ': ' + Items[_einnahme][xy.x, xy.y].Bemerkung[b]);
      end;
erhalte ich in der FOR-schleife einen Index-überlauf. :shock: :shock:
Einzig durch eine Änderung der Schleife durch AddStrings(Day.Memo1.Lines); konnte ich dieses Problem umgehen.

Wie ich nun aber auf die Vermutung komme, das das ein Problem mit den Rechner sein Könnte?
Der Procedure Auszug wurde auf meinem alten Ubuntu 18.04 Rechner (nun Debian 12) geschrieben und läuft OHNE Störung auch auf einer Windows - Maschine.
Wenn ich dieses Programm nun aber auf meinem Windows - Testrechner starte und die Schleife durchlaufen soll, wird diese einfach übersprungen.

Finde ich auch etwas Merkwürdig, das ich auf Windows Lazarus 3.99 laufen habe und auf Debian 3.0.
Beide Maschinen wurden mit fpcdeluxe V2.4.0 mit der OptionStable installiert

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

Joh
Lazarusforum e. V.
Beiträge: 191
Registriert: Sa 26. Mai 2012, 17:31
OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
CPU-Target: 64Bit

Re: Überlauf des Index

Beitrag von Joh »

ähem, ich habe mir jetzt nicht den ganzen Code angeschaut, aber beim überfliegen sagt mir:
a: byte...
und eine Doppelschleife mit 12*31 Elementen..., das da womöglich Grenzen überschritten werden...

Vieleicht wäre ein a: Word ja hilfreich?
just my two Beer

Mathias
Beiträge: 6210
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Überlauf des Index

Beitrag von Mathias »

Versuche mal folgendes.
Alt:

Code: Alles auswählen

      for m := 1 to 12 do
        for d := 1 to 31 do
Neu:

Code: Alles auswählen

      for m := 0 to 12 - 1 do
        for d := 0 to 31 - 1 do
Ich denke, es knallt hier:

Code: Alles auswählen

       if Items[_einnahme, d, m].Eingenommen then begin
Items fangen immer bei "0" an.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: Überlauf des Index

Beitrag von Maik81SE »

Joh hat geschrieben:
Mi 6. Mär 2024, 08:29
ähem, ich habe mir jetzt nicht den ganzen Code angeschaut, aber beim überfliegen sagt mir:
a: byte...
und eine Doppelschleife mit 12*31 Elementen..., das da womöglich Grenzen überschritten werden...

Vieleicht wäre ein a: Word ja hilfreich?
wie du schon sagst. Überflogen

Schleifen OHNE Weiteren Inhalt: ->

Code: Alles auswählen

      for m := 1 to 12 do
        for d := 1 to 31 do
          for _einnahme := Low(Items) to High(Items) do
            if Items[_einnahme, d, m].Eingenommen then
              for a := 0 to (Items[_einnahme][d, m].Bemerkung.Count - 1) do
Würde dieser Fehler schon/auch in der in der Funktion TEinnahme.SetItem; auftreten, würde ich dir recht geben.
Mathias hat geschrieben:
Mi 6. Mär 2024, 08:47
Versuche mal folgendes.
Alt:

Code: Alles auswählen

      for m := 1 to 12 do
        for d := 1 to 31 do
Neu:

Code: Alles auswählen

      for m := 0 to 12 - 1 do
        for d := 0 to 31 - 1 do
Ich denke, es knallt hier:

Code: Alles auswählen

       if Items[_einnahme, d, m].Eingenommen then begin
Items fangen immer bei "0" an.
Jetzt muß ich mal fragen, an/in welchem Punkt ich mich ggf undeutlich ausgedrückt habe?

Die Procedure TEinnahme.SetItem; funktioniert OHNE Probleme.

Es knallt in der Zeile:

Code: Alles auswählen

for b := 0 to (Items[_einnahme][xy.x, xy.y].Bemerkung.Count - 1) do
Dennoch habt ihr beide, wenn ich mir meine var items anschaue, sicherlich den richtigen Riecher.
Wenn ich mir zudem den TStringlist.Count anschaue, wäre die Wahl der a / b : Integer sicherlich die bessere Wahl, wenn man davon ausgeht, das mehr als 256 Zeilen geschrieben werden dürfen?!

Ich würde eher vermuten es knallt, da ich Bemerkung.Count - 1 verwende, aber es Knalle nach Sichtung mit dem Debuggerfenster -> Lokale Variablen schon, wenn B = 0.

Quasi im ersten durchlauf der Schleife

Hier nochmal mein selbst erstelltes Items.

Code: Alles auswählen

type
  // TItem Definition
  TItem                                          = record
    Day_Info, Medikament, Schmerz, Schlagwort    : string;
    Bemerkung                                    : TStringList;
    Menge, Tablette                              : Real;
    Dosis                                        : word;
    Eingenommen                                  : Boolean;
    Time                                         : TDateTime;
    __einnahme                                   : Byte;
    end;

var
  // items = Dynamisches Array über dem "Kalender Array"
  Items                                : Array of array [1..31, 1..12] of TItem;
  
// Bemerkung; 10 * 12 * 31 x erzeugen
// ergibt  3720 Aktive TStringList
procedure _01;
var d, m : Byte;
begin
  for d:= 1 to 31 do
    for m:= 1 to 12 do
      for _einnahme := Low(Items) to High(Items) do
        Items[_einnahme][d, m].Bemerkung         := TStringList.Create;
end;

// 
constructor TEinnahme.Create;
begin
  inherited;
  // Dynamisches Array auf 10 begrenzen
  SetLength(Items, 10);
  _01;
end;
Auf der anderen Seite frage ich mich gerade, ob es deshalb knallt, das ich hier das Items innerhalb der

Code: Alles auswählen

    with Control_Edit.memo1.Lines do begin
aufrufe?

Das muß ich aber morgen mal testen, da mein Kopf gerade mehr als qualmt

Zusammen gefasst[/i]
Unit udata:

for a := 0 to (Items[_einnahme][d, m].Bemerkung.Count - 1) do << Läuft ohne Fehler

Formular _Day:
for b := 0 to (Items[_einnahme][xy.x, xy.y].Bemerkung.Count - 1) do << hier knallt es

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

Erwin
Beiträge: 286
Registriert: Mi 16. Sep 2009, 14:15
OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2

Re: Überlauf des Index

Beitrag von Erwin »

Man kann durchaus einer Byte-Variablen eine größere Zahl als 255 zuweisen, aber dann fängt es wieder von vorne an. Also bei 258 ist dann in der Variable 2 oder 3. Vermutlich 2. Kompiliert wird es also, allerdings warnt es auch an der Stelle, wo eine zu große Zahl 'direkt' zugewiesen wird. Indirekt ... weiß ich nicht, ob er da warnt. Vielleicht kann es nicht schaden, dennoch Word zu nutzen, sollte Joh mit seinem Berechnungen, also dem Überlauf, recht haben. Denn wer weiß, was für Auswirkungen es dann später haben kann?
Lazarus 2.2.0 / FP 3.2.4

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 338
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon (Windows wenn notwendig), Lazarus 3.0 FPC 3.3.1

Re: Überlauf des Index

Beitrag von Niesi »

Maik81SE hat geschrieben:
Mi 6. Mär 2024, 21:35


Die Procedure TEinnahme.SetItem; funktioniert OHNE Probleme.

Es knallt in der Zeile:

Code: Alles auswählen

for b := 0 to (Items[_einnahme][xy.x, xy.y].Bemerkung.Count - 1) do

Kann es sein, dass in irgendwas[0] oder so nix sinnvolles drin ist, weil Du die Befüllung erst mit Index 1 startest?
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Benutzeravatar
six1
Beiträge: 788
Registriert: Do 1. Jul 2010, 19:01

Re: Überlauf des Index

Beitrag von six1 »

Setze doch mal einen Breakpoint auf die Zeile und Klicke mal auf Bemerkung, wenn der Programmablauf am Breakpoint anhält...
Was bekommst du dann angezeigt?

Code: Alles auswählen

                                             |hier|
for b := 0 to (Items[_einnahme][xy.x, xy.y].Bemerkung.Count - 1) do
Mein Gedanke: Für das gewählte Element ist die TStringlist NIL

Wenn dem so ist, um die Schleife:

Code: Alles auswählen

if Items[_einnahme][xy.x, xy.y].Bemerkung <> NIL then
begin
  .....
end;
Gruß, Michael

Benutzeravatar
Garfield
Beiträge: 172
Registriert: Do 5. Jun 2008, 22:07
OS, Lazarus, FPC: Ubuntu 22.04 LTS (Laz 3.0 FPC3.2.2)
CPU-Target: 64Bit
Wohnort: Aken

Re: Überlauf des Index

Beitrag von Garfield »

Maik81SE hat geschrieben:
Di 5. Mär 2024, 20:45

Code: Alles auswählen

 Procedure auszug
   with Control_Edit.memo1.Lines do begin
      Add(IntToStr(_einnahme + 1) + '. Einnahme:');
      Add('Schlagwort: ' + Items[_einnahme][xy.x, xy.y].Schlagwort);
      Add('Stärke: ' + Items[_einnahme][xy.x, xy.y].Day_Info);
      Add('Schmerzen: ' + Items[_einnahme][xy.x, xy.y].Schmerz);
      Add('Medikament: ' + Items[_einnahme][xy.x, xy.y].Medikament);
      Add('Dosis: ' + FloatToStr(Items[_einnahme][xy.x, xy.y].Dosis, DefaultFormatSettings));
      Add('Zeit der Einnahme: ' + TimeToStr(Items[_einnahme][xy.x, xy.y].Time, DefaultFormatSettings));
      for b := 0 to (Items[_einnahme][xy.x, xy.y].Bemerkung.Count - 1) do
        Add('Bemerkung Zeile' + IntToStr(b + 1) + ': ' + Items[_einnahme][xy.x, xy.y].Bemerkung[b]);
      end;
erhalte ich in der FOR-schleife einen Index-überlauf. :shock: :shock:
Einzig durch eine Änderung der Schleife durch AddStrings(Day.Memo1.Lines); konnte ich dieses Problem umgehen.
Vor der Schleife sollte eine Überprüfung erfolgen, ob der Count mindestens 1 ist. Wenn der Count = 0 ist, soll b von 0 bis -1 zählen. Heißt, wenn b vom Typ Byte ist, wird von 0 bis 255 gezählt.
Gruß Garfield

Benutzeravatar
six1
Beiträge: 788
Registriert: Do 1. Jul 2010, 19:01

Re: Überlauf des Index

Beitrag von six1 »

Es muss kein Überlauf sein!
Allein der Zugriff auf ein Objekt, welches NIL ist, lässt an dieser Stelle das Programm abschmieren...
Gruß, Michael

Benutzeravatar
Garfield
Beiträge: 172
Registriert: Do 5. Jun 2008, 22:07
OS, Lazarus, FPC: Ubuntu 22.04 LTS (Laz 3.0 FPC3.2.2)
CPU-Target: 64Bit
Wohnort: Aken

Re: Überlauf des Index

Beitrag von Garfield »

Maik81SE hat geschrieben:
Mi 6. Mär 2024, 21:35
Es knallt in der Zeile:

Code: Alles auswählen

for b := 0 to (Items[_einnahme][xy.x, xy.y].Bemerkung.Count - 1) do
Dann müsste der Fehler bei _einnahme, xy.x und xy.y zu suchen sein.
Gruß Garfield

Benutzeravatar
theo
Beiträge: 10500
Registriert: Mo 11. Sep 2006, 19:01

Re: Überlauf des Index

Beitrag von theo »

Mir wird beim Anschauen schon schwindlig.
Ich würde das übersichtlicher machen und "with" ist bei längerem Code sowieso schlecht.
Z.B. so, dann kann man es lesen (Hat jetzt mit dem Fehler erstmal nichts zu tun).

Code: Alles auswählen

 Procedure auszug
      AMemo:=Control_Edit.memo1;
      AItem:=Items[_einnahme][xy.x, xy.y];
      AMemo.Lines.Add(IntToStr(_einnahme + 1) + '. Einnahme:');
      AMemo.Lines.Add('Schlagwort: ' + AItem.Schlagwort);
      AMemo.Lines.Add('Stärke: ' + AItem.Day_Info);
      AMemo.Lines.Add('Schmerzen: ' + AItem.Schmerz);
      AMemo.Lines.Add('Medikament: ' + AItem.Medikament);
      AMemo.Lines.Add('Dosis: ' + FloatToStr(AItem.Dosis, DefaultFormatSettings));
      AMemo.Lines.Add('Zeit der Einnahme: ' + TimeToStr(AItem.Time, DefaultFormatSettings));
      for b := 0 to (AItem.Bemerkung.Count - 1) do
        AMemo.Lines.Add('Bemerkung Zeile' + IntToStr(b + 1) + ': ' + AItem.Bemerkung[b]);

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 338
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon (Windows wenn notwendig), Lazarus 3.0 FPC 3.3.1

Re: Überlauf des Index

Beitrag von Niesi »

theo hat geschrieben:
Do 7. Mär 2024, 08:36
Mir wird beim Anschauen schon schwindlig.
Ich würde das übersichtlicher machen und "with" ist bei längerem Code sowieso schlecht.
Z.B. so, dann kann man es lesen (Hat jetzt mit dem Fehler erstmal nichts zu tun).

Code: Alles auswählen

 Procedure auszug
      AMemo:=Control_Edit.memo1;
      AItem:=Items[_einnahme][xy.x, xy.y];
      AMemo.Lines.Add(IntToStr(_einnahme + 1) + '. Einnahme:');
      AMemo.Lines.Add('Schlagwort: ' + AItem.Schlagwort);
      AMemo.Lines.Add('Stärke: ' + AItem.Day_Info);
      AMemo.Lines.Add('Schmerzen: ' + AItem.Schmerz);
      AMemo.Lines.Add('Medikament: ' + AItem.Medikament);
      AMemo.Lines.Add('Dosis: ' + FloatToStr(AItem.Dosis, DefaultFormatSettings));
      AMemo.Lines.Add('Zeit der Einnahme: ' + TimeToStr(AItem.Time, DefaultFormatSettings));
      for b := 0 to (AItem.Bemerkung.Count - 1) do
        AMemo.Lines.Add('Bemerkung Zeile' + IntToStr(b + 1) + ': ' + AItem.Bemerkung[b]);
Also, mir ging das auch so - deshalb habe ich auf den ersten Text auch nicht geantwortet. Da habe ich lange gebraucht, um überhaupt eine Idee zu haben, welchen Sinn das hat. Beim zweiten Text von Maik kam mir die Idee, dass in irgendwas[0] halt gar nichts eingelesen wurde und die App daher abschmiert.

Was ich nicht verstehe: Wieso mit Records arbeiten? Ein Object ist doch viel übersichtlicher und weniger fehleranfällig, wenn es sauber :idea: programmiert wird ... :lol:
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: Überlauf des Index

Beitrag von Maik81SE »

Moin @all

Sitze gerade auf Arbeit beim "Mittag/Frühstück" und lass es mal auf verdacht unter Linux (Debian12) laufen.
Habe mir gestern Abend noch das Komplette Programm in meine Git geladen, und somit sind auch alle Einstellungen des Kompilers auf Windows und Debian Identisch und was kommt raus?

Die Zeile, welche bei Windows 10 Knallt wird bei Debian ohne Probleme durchgelaufen. :shock: :shock:

Fragt mich bitte nicht warum, aber hier scheint es wohl doch einen Unterschied zugeben.

Mit dem Wissen kann man ja Theoretisch arbeiten und das wie folgt umschreiben.

Code: Alles auswählen

      {$ifdef Windows}
      AddStrings(Day.Memo1.Lines);
      {$else ifdef Linux}
      for b := 0 to (Items[_einnahme][xy.x, xy.y].Bemerkung.Count - 1) do
        Add('Bemerkung Zeile' + IntToStr(b + 1) + ': ' + Items[_einnahme][xy.x, xy.y].Bemerkung[b]);
      {$endif}
ich weiß, das diese Lösung weder schön noch sauber ist, aber für den Zweckdienlichen Temporären Einsatz ein annehmbarer Kompromiss.

Also heute Abend beide Rechner nebeneinander stellen und alles unter die Lupe nehmen.

Ich sag es schon seit Jahren :mrgreen:
Elektronische
Daten
Verwirrung

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6217
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Überlauf des Index

Beitrag von af0815 »

Ich hoffe du hast beim Testen immer die Debuggingeinstellungen aktiv.
Screenshot 2024-03-07 131933.png
Screenshot 2024-03-07 131933.png (22.94 KiB) 5042 mal betrachtet
Mit dem Einstellungen vermeidet man eine Menge an Fehlern, weil es relativ rasch kracht.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: Überlauf des Index

Beitrag von Maik81SE »

af0815 hat geschrieben:
Do 7. Mär 2024, 13:21
Ich hoffe du hast beim Testen immer die Debuggingeinstellungen aktiv.

Screenshot 2024-03-07 131933.png

Mit dem Einstellungen vermeidet man eine Menge an Fehlern, weil es relativ rasch kracht.
Dies sind meine Debuggingeinstellungen, welche ich einmal als Default angelegt habe und somit als Vorlage für alle Projekte dient
Voreingestellte Projekteinstellungen Linux PC als Vorlage für alle definiert
Voreingestellte Projekteinstellungen Linux PC als Vorlage für alle definiert
Bildschirmfoto vom 2024-03-07 20-52-02.png (104.89 KiB) 4984 mal betrachtet
Vererbte Einstellung auf alle Ziele (Windows, Embedded) übernommen
Projekteinstellungen Windows PC
Projekteinstellungen Windows PC
Bildschirmfoto vom 2024-03-07 21-01-10.png (106.42 KiB) 4984 mal betrachtet

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

Antworten