suche ein wiki beitrag für if .... then

Für sonstige Unterhaltungen, welche nicht direkt mit Lazarus zu tun haben
reiter
Beiträge: 217
Registriert: Sa 18. Nov 2017, 16:58

suche ein wiki beitrag für if .... then

Beitrag von reiter »

hallo wie die Überschrift schon sagt suche ich einen Beitrag oder Wiki Beitrag wie ich das machen kann

also ich habe in memo1.text zum Beispiel "Foto" als Text stehen (immer nur ein wort)
nun wollte ich wenn das wort "Foto" da steht ein Bild zu Foto laden

also

Code: Alles auswählen

procedure TForm1.InfoImage;
begin
if memo1.text ,'Foto' then
image8.Picture.LoadFromFile(GetUserdir + 'Foto.png');
end;



macht er aber nicht..
dann kann es auch sein das da in dem Memo1.Text Feld nicht "Foto" steht sondern "Bild" dann soll er das Bild.png laden

Code: Alles auswählen

procedure TForm1.InfoImage;
begin
 
if memo1.text ,'Foto' then
image8.Picture.LoadFromFile(GetUserdir + 'Foto.png');
if memo1.text ,'Bild' then
image8.Picture.LoadFromFile(GetUserdir + 'Bild.png');
end;
end;

hat da irgendjemand einen link zu einem Wiki Betrag dazu oder wie kann ich das am besten machen

danke
Zuletzt geändert von monta am So 6. Okt 2019, 17:00, insgesamt 2-mal geändert.
Grund: Highlighter

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: suche ein wiki beitrag für if .... then

Beitrag von MacWomble »

1. warum nimmst du ein Memo für ein Wort? Ein TEdit sollte da deutlich besser geeignet sein.
2. If Edit1.Text = 'Foto' then
3. https://wiki.freepascal.org/If/de

Bei google z.B. 'Lazarus If Then' eingeben bringt dich zu den richtigen Informationen
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

reiter
Beiträge: 217
Registriert: Sa 18. Nov 2017, 16:58

Re: suche ein wiki beitrag für if .... then

Beitrag von reiter »

hallo, ja sicher wäre da ein tedit besser...
muss mal sehen ob ich das alles umändern kann
hm da hab ich wohl das = vergessen...

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: suche ein wiki beitrag für if .... then

Beitrag von fliegermichl »

Du kannst das aber auch einfacher gestalten indem du nachschaust ob es in dem Verzeichnis eine Datei gibt die so heisst wie es in dem Edit oder Memo steht.

Code: Alles auswählen

 
 
if (FileExists(GetUserDir + Memo1.Text + '.png')) then
 Image1.Picture.LoadFromFile(GetUserDir + Memo1.Text + '.png');
 

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: suche ein wiki beitrag für if .... then

Beitrag von wp_xyz »

Auf keinen Fall Memo1.Text verwenden, denn dort wird immer ein Zeilenumbruch angehängt --> aus "Bild" wird "Bild"#13#10

Code: Alles auswählen

// Memo auf Formular, enthält als einzige Zeile 'Bild', kein RETURN am Ende
procedure TForm1.Button1Click(Sender: TObject);
var
  s: String;
  tmp: String;
  i: Integer;
begin
  tmp := Memo1.Text;
  s := '';
  for i:=1 to Length(tmp) do
    s := s + ' ' + Format('%.2x', [ord(tmp[i])]);
  ShowMessage(IntToStr(Length(Memo1.Text)) + Lineending + s);
end;


Ausgabe:
6
42 69 6C 64 0D 0A

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: suche ein wiki beitrag für if .... then

Beitrag von fliegermichl »

Das passiert aber nur, wenn der Zeilenumbruch im Text enthalten ist. Gehe ich in das Memo und lösche den Zeilenumbruch raus, dann kommt der auch aus der Property Memo1.Text raus.

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: suche ein wiki beitrag für if .... then

Beitrag von wp_xyz »

Hast du das ausprobiert? Das obige Beispiel hatte extra den Hinweis "Kein RETURN am Ende".

Der folgende Code (der dem obigen entspricht, aber das Memo löscht und das Wort "Bild" hinzufügt) liefert dasselbe Ergebnis wie oben

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var
  s: String;
  tmp: String;
  i: Integer;
begin
  Memo1.Clear;
  Memo1.Lines.Add('Bild');
  tmp := Memo1.Text;
  s := '';
  for i:=1 to Length(tmp) do
    s := s + ' ' + Format('%.2x', [ord(tmp[i])]);
  ShowMessage(IntToStr(Length(Memo1.Text)) + Lineending + s);
end;

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: suche ein wiki beitrag für if .... then

Beitrag von fliegermichl »

wp_xyz hat geschrieben:Hast du das ausprobiert? Das obige Beispiel hatte extra den Hinweis "Kein RETURN am Ende".



Ich hab ein Memo und einen Button in das Formular gepackt und deinen Code reinkopiert. Dann nach dem Programmstart händisch den Zeilenumbruch gelöscht und dann den Button angeklickt. Da war dann CRLR mehr hinten in der Ausgabe.

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: suche ein wiki beitrag für if .... then

Beitrag von wp_xyz »

ok, so meinst du das. Erscheint mir aber etwas realitätsfern. Wenn's unbedingt ein Memo für die Aufbewahrung der Dateinamen sein muss, dann ist Memo.Lines[index] auf jeden Fall sinnvoller als Memo.Text, auch wenn es nur 1 Zeile gibt.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: suche ein wiki beitrag für if .... then

Beitrag von fliegermichl »

Da gebe ich dir recht.

reiter
Beiträge: 217
Registriert: Sa 18. Nov 2017, 16:58

Re: suche ein wiki beitrag für if .... then

Beitrag von reiter »

na hey, Danke für die super Hilfe von Euch,
ich bin gerade das am umstellen auf ein Edit feld
hat mir sehr geholfen...
recht vielen Dank

reiter
Beiträge: 217
Registriert: Sa 18. Nov 2017, 16:58

Re: suche ein wiki beitrag für if .... then

Beitrag von reiter »

also noch ein kleines Problem

auf dem MAC funktioniert das richtig gut.

Der Text wird erst eingelesen , wenn der Verbinden Button gedrückt wird, je nach dem welches Gerät angesprochen wird kommt es drauf an was dann in Edit15.Text steht.
als Beispiel steht einmal Bild drin oder wenn ein anderes Gerät gewählt wird, Foto, also variiert der Text im Editfeld.

Code: Alles auswählen

procedure TForm1.BildLoad;
begin
  if Edit15.Text=('Bild') then Image8.Picture.LoadFromFile('boxes/Bild.png');
  if Edit15.Text=('Foto') then Image8.Picture.LoadFromFile('boxes/Foto1.png');
end;


im Windows funktioniert das aber nicht.


die Funktion procedure Bildload; wird mit einer anderen Funktion mit eingelesen und sollte aber das Bild liefern (im Windows geht das nicht) weiß jemand warum?

danke
Zuletzt geändert von reiter am Di 17. Sep 2019, 18:40, insgesamt 3-mal geändert.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: suche ein wiki beitrag für if .... then

Beitrag von m.fuchs »

Ich habe deinen Text jetzt dreimal gelesen und verstehe ihn immer noch nicht.

1.) Beschreibe bitte mit klaren Worten: Was machst du? Was passiert? Was sollte deiner Meinung nach passieren?

2.) Benutze bitte Satzzeichen und korrekte Großschreibung.

3.) Pack den relevanten Quellcode (mit Highlighter) dazu.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

reiter
Beiträge: 217
Registriert: Sa 18. Nov 2017, 16:58

Re: suche ein wiki beitrag für if .... then

Beitrag von reiter »

habe es nochmal etwas umgeschrieben.

danke

Frank Ranis
Beiträge: 201
Registriert: Do 24. Jan 2013, 21:22

Re: suche ein wiki beitrag für if .... then

Beitrag von Frank Ranis »

Hallo reiter ,

reiter hat geschrieben:also noch ein kleines Problem

auf dem MAC funktioniert das richtig gut.

Der Text wird erst eingelesen , wenn der Verbinden Button gedrückt wird, je nach dem welches Gerät angesprochen wird kommt es drauf an was dann in Edit15.Text steht.
als Beispiel steht einmal Bild drin oder wenn ein anderes Gerät gewählt wird, Foto, also variiert der Text im Editfeld.

Code: Alles auswählen

procedure TForm1.BildLoad;
begin
  if Edit15.Text=('Bild') then Image8.Picture.LoadFromFile('boxes/Bild.png');
  if Edit15.Text=('Foto') then Image8.Picture.LoadFromFile('boxes/Foto1.png');
end;


im Windows funktioniert das aber nicht.


die Funktion procedure Bildload; wird mit einer anderen Funktion mit eingelesen und sollte aber das Bild liefern (im Windows geht das nicht) weiß jemand warum?

danke


Linux / Unix benutzen andere Pfad-Trenner , in Windows wird '\' benutzt .
Lazarus hat zu diesem Zweck eine Konstante (DirectorySeparator) , die sich dem Betriebssytem automatisch anpasst .

Probier das mal so aus.

Code: Alles auswählen

 
  if Edit15.Text='Bild' then Image8.Picture.LoadFromFile('boxes'+DirectorySeparator+'Bild.png');
 


Gruß

Frank
www.flz-vortex.de

Antworten