AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

If-Anweisung mit "in"

Ein Thema von Helmi · begonnen am 19. Jan 2005 · letzter Beitrag vom 20. Jan 2005
Antwort Antwort
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#1

If-Anweisung mit "in"

  Alt 19. Jan 2005, 19:31
Hallo,

ich habe folgende If-Anweisung:

Code:
If DateiEndung in ['jpg', 'jpeg', 'bmp', 'ico', 'emf', 'wmf'] then
{ ... }
Die Variable "DateiEndung" ist vom Typ String;

Wenn ich das compilieren will, bekomm ich folgende Meldung:
[Fehler] Viewer.pas(233): Inkompatible Typen: 'Integer' und 'String'


Ich will prüfen ob der Inhalt der Variablen "DateiEndung" sich in der Liste befindet.

Was hab ich falsch gemacht, bzw. wie kann man das machen ohne

Code:
If (DateiEndung = 'jpg') or (DateiEndung = 'jpeg') or .....
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: If-Anweisung mit "in"

  Alt 19. Jan 2005, 19:35
Hallo Helmi,

zeig doch bitte mal ein bisschen mehr Code. Die Zeile die du da hast passt, evtl. funktioniert es sonst irgendwo nicht.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#3

Re: If-Anweisung mit "in"

  Alt 19. Jan 2005, 19:38
Also ich weiss zwar nicht was es bringen soll aber bitte hier hast du die zeilen die drüber liegen:

Code:
      //Datei aus der Ordnerliste auslesen
      Datei := Ordnerliste.Strings[neuesBild];

      DateiEndung := StringReplace(ExtractFileExt(Datei), '.', '', [rfReplaceAll]);

      showmessage(Dateiendung);

      If DateiEndung in ['jpg', 'jpeg', 'bmp', 'ico', 'emf', 'wmf'] then
        begin
          //ausgewähltes Image laden
          Image.Picture.LoadFromFile(Ordner + Datei);
        end;
Trotzdem hängt der an der If-Anweisung mit dem Integer und String - Fehler

genauer gesagt am ersten Komma nach 'jpg'.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: If-Anweisung mit "in"

  Alt 19. Jan 2005, 19:38
Zitat von alcaeus:
Die Zeile die du da hast passt,
Nein, in [set...] geht nicht mit Strings.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#5

Re: If-Anweisung mit "in"

  Alt 19. Jan 2005, 19:43
oki - Danke Sakura

muss ich es doch mit Or machen!!
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: If-Anweisung mit "in"

  Alt 20. Jan 2005, 10:36
Ich hätte da eine Idee, wie man es ohne or hinkriegt. Dafür braucht man aber eine zusätzliche Funktion, die folgendermaßen aussieht:
Delphi-Quellcode:
function StrIdx(aStr: string; strArr: array of string): Integer;
var i: Integer;
begin
 Result:= -1;
 for i:= 0 to High(strArr) do
  if (aStr=strArr[i]) then
  begin
   Result:= i;
   Break;
  end;
end;
Die Funktion liefert den Index von aStr, wenn es im Array strArr enthalten ist, sonst -1. Damit könnte man statt
If (DateiEndung = 'jpg') or (DateiEndung = 'jpeg') or ..... Folgendes schreiben:
Delphi-Quellcode:
 
If (StrIdx(DateiEndung, Endungen)>=0) then begin
  //mache irgendwas
  ...
end;
Die Variable Endungen muss in diesem Fall ein Array of string sein, indem die Dateiendungen, nach denen gesucht werden soll, enthalten sind.
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: If-Anweisung mit "in"

  Alt 20. Jan 2005, 10:43
Wenn wir schon mal dabei sind, dann trage ich auch gerne meine Lösung vor, wie ich die gerne nutze. In diesem Fall erweitert, da z.B. JPEGs verschiedene Endungen haben können.
Delphi-Quellcode:
type
  // bekannte Dateitypen
  TFileType = (ftUnknown, ftJpg, ftGif, ftBmp);

type
  // Assoziation zw. Dateiendung und Dateitype
  TFileExt = record
    Ext: String[5];
    FileType: TFileType;
  end;

const
  // Liste bekannter Assoziationen
  FILE_TYPES: array[0..4] of TFileExt = (
    (Ext: 'jpg'; FileType: ftJpg),
    (Ext: 'jpe'; FileType: ftJpg),
    (Ext: 'jpeg'; FileType: ftJpg),
    (Ext: 'gif'; FileType: ftGif),
    (Ext: 'bmp'; FileType: ftBmp)
  );

function GetFileType(FileName: String): TFileType;
var
  lExt: String;
  I: Integer;
  Res: TFileType;
begin
  Res := ftUnknown;
  lExt := AnsiLowerCase(ExtractFileExt(FileName));
  for I := Low(FILE_TYPES) to High(FILE_TYPES) do
    if FILE_TYPES[I].Ext = lExt then
    begin
      Res := FILE_TYPES[I].FileType;
      Break;
    end;
  Result := Res;
end;
......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: If-Anweisung mit "in"

  Alt 20. Jan 2005, 11:22
Die Vorgehensweise von sakura ist auch nicht schlecht, vielleicht sogar besser als mein Vorschlag.
Bei meiner Lösung kann man allerding auch die Dateitypen herausbekommen, da man an Hand des Ergebnisses der Funktion StrIdx ja die Position des Suchstrings im Array erhält und somit auch die Dateiendung.
Welche Variante man nimmt ist also Geschmackssache.

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz