Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi position vom komma (https://www.delphipraxis.net/87759-position-vom-komma.html)

EWeiss 5. Mär 2007 19:47


position vom komma
 
warum gibt er mir hier einen wert von 0?

Delphi-Quellcode:
X := pos(WStyleList.ValueFromIndex[P], ',');
Ich möchte das mir die position vom komma abhängig vom string zurückgegeben wird.
Ist vielleicht ValueFromIndex falsch ?

Eigentlich müßte mir hier der wert 17 übergeben werden!
Delphi-Quellcode:
'WS_ACTIVECAPTION,xxx'
Kenn mich mit TStringList nicht so aus.. sorry

gruss

mkinzler 5. Mär 2007 19:50

Re: position vom komma
 
Was ist P. Steht noch mehr in der Stringliste? Was ist al Delimiter eingestellt?

EWeiss 5. Mär 2007 19:54

Re: position vom komma
 
Zitat:

Zitat von mkinzler
Was ist P. Steht noch mehr in der Stringliste? Was ist al Delimiter eingestellt?

p und x ist ein integer..
delemiter ist das komma

hier die ganze procedure Sorry hätte ic hauch direkt posten können.

Delphi-Quellcode:
procedure FillList;
Var
  P : Integer;
  X : Integer;

begin
    with WStyleList do
    begin
       Add(format('%s = $%8.8x', ['WS_BORDER', WS_BORDER]));
       Add(format('%s = $%8.8x', ['WS_DLGFRAME', WS_DLGFRAME]));
       Add(format('%s = $%8.8x', ['WS_EX_TOOLWINDOW', WS_EX_TOOLWINDOW]));
       Add(format('%s = $%8.8x', ['WS_THICKFRAME', WS_DLGFRAME]));
       Add(format('%s = $%8.8x', ['WS_DLGFRAME', WS_DLGFRAME]));
    end;

    For P := 0 To WStyleList.Count - 1 do
    begin
        X := pos(WStyleList.ValueFromIndex[P], ',');
        WValue.Add(AnsiMidStr(WStyleList.ValueFromIndex[P], X + 1, P));
        WStyleList.ValueFromIndex[P] := AnsiMidStr(WStyleList.ValueFromIndex[P], 1, X - 1);
        messagebox(0, PChar(WStyleList.ValueFromIndex[P]),PChar('test'),MB_OK or MB_ICONERROR );
    end;

end;

Hawkeye219 5. Mär 2007 19:54

Re: position vom komma
 
Hallo Emil,

zuerst kommt der Suchstring, dann der zu durchsuchende String.

Gruß Hawkeye

EWeiss 5. Mär 2007 20:00

Re: position vom komma
 
Zitat:

Zitat von Hawkeye219
Hallo Emil,

zuerst kommt der Suchstring, dann der zu durchsuchende String.

Gruß Hawkeye

habs mal umgedreht ist auch null

Delphi-Quellcode:
X := pos(',', WStyleList.ValueFromIndex[P]);
bei vb benutze ich InStr vielleicht mit pos nicht kompatible ?

suchende string wäre das komma(delemiter)

gruss

mkinzler 5. Mär 2007 20:04

Re: position vom komma
 
Der Fehler wird eher am .ValueFromIndex leigen, ich glaube du brauchst das:
Delphi-Quellcode:
X := pos(',', WStyleList.Strings[P]);

Hawkeye219 5. Mär 2007 20:10

Re: position vom komma
 
Zitat:

Zitat von EWeiss
Delphi-Quellcode:
Add(format('%s = $%8.8x', ['WS_BORDER', WS_BORDER]));

Ich sehe in deinen Listenelementen auch kein Komma...

Gruß Hawkeye

EWeiss 5. Mär 2007 20:14

Re: position vom komma
 
Zitat:

Zitat von mkinzler
Der Fehler wird eher am .ValueFromIndex leigen, ich glaube du brauchst das:
Delphi-Quellcode:
X := pos(',', WStyleList.Strings[P]);

Arrgghhh ich glaub habe da was falsches verstanden.
Da kann nur null rauskommen.

Delphi-Quellcode:
Add(format('%s = $%8.8x', ['WS_BORDER', WS_BORDER]));
gibt mir ja nur den wert von WS_BORDER zurück.

addiert also nicht den ganzen string,

Der eigentlich so aussehen soll.
Delphi-Quellcode:
Add('WS_BORDER' + ',' + format('%s = $%8.8x', ['WS_BORDER', WS_BORDER]));
Allerding gibt er mir dann nur den Namen nicht die Value von WS_BORDER zurück.
Muss mal schauen..

EDIT:
Das wäre der richtige wert.
Bin heute was neben der Rolle ;)
Delphi-Quellcode:
messagebox(0, PChar(format('$%8.8x', [WS_BORDER])), PChar('test2'),MB_OK or MB_ICONERROR);
danke

EWeiss 5. Mär 2007 20:48

Re: position vom komma
 
Nicht hauen :duck:

Jetzt gehts!
Poste das nochmal für andere die auch so ein ähnliches problem haben.



Delphi-Quellcode:
procedure FillList;
Var
  P : Integer;
  X : Integer;

begin
    with WStyleList do
    begin
       Add('WS_BORDER' + ',' +  format('$%8.8x', [WS_BORDER]));
       Add('WS_DLGFRAME' + ',' +  format('$%8.8x', [WS_DLGFRAME]));
       Add('WS_EX_TOOLWINDOW' + ',' +  format('$%8.8x', [WS_EX_TOOLWINDOW]));
       Add('WS_THICKFRAME' + ',' +  format('$%8.8x', [WS_THICKFRAME]));
       Add('WS_SIZEBOX' + ',' +  format('$%8.8x', [WS_SIZEBOX]));
    end;

    For P := 0 To WStyleList.Count - 1 do
    begin
        X := pos(',',WStyleList.Strings[P]);
        WValue.Add(AnsiMidStr(WStyleList.Strings[P], X + 1, strlen(PChar(WStyleList.Strings[P]))));
        WStyleList.Strings[P] := AnsiMidStr(WStyleList.Strings[P], 1, X - 1);
        messagebox(0, PChar(WValue.Strings[p]),PChar('test'),MB_OK or MB_ICONERROR );
    end;

end;
Mich wundert nur das 'WS_THICKFRAME' und 'WS_SIZEBOX' den gleichen wert besitzen
schon seltsam ...
Das convertieren der Variablen in Delphi nervt ganz schön ;)
Sehe bald vor lauter Klammern den Wald(Source) nicht mehr :mrgreen:

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:15 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